%META:TOPICPARENT{name="VirtGraphReplication"}% ---+ Replication Example: Star Topology %TOC% ---++Introduction The following How-To walks you through setting up Virtuoso RDF Graph Replication in a Star Topology. %BR%%BR%%BR%%BR% ---++Prerequisites ---+++Database INI Parameters Suppose there are 3 Virtuoso instances respectively with the following ini parameters values: 1. virtuoso1.ini: ... [Database] DatabaseFile = virtuoso1.db TransactionFile = virtuoso1.trx ErrorLogFile = virtuoso1.log ... [Parameters] ServerPort = 1111 SchedulerInterval = 1 ... [HTTPServer] ServerPort = 8891 ... [URIQA] DefaultHost = localhost:8891 ... [Replication] ServerName = db1 ... 1. virtuoso2.ini: ... [Database] DatabaseFile = virtuoso2.db TransactionFile = virtuoso2.trx ErrorLogFile = virtuoso2.log ... [Parameters] ServerPort = 1112 SchedulerInterval = 1 ... [HTTPServer] ServerPort = 8892 ... [URIQA] DefaultHost = localhost:8892 ... [Replication] ServerName = db2 ... 1. virtuoso3.ini: ... [Database] DatabaseFile = virtuoso3.db TransactionFile = virtuoso3.trx ErrorLogFile = virtuoso3.log ... [Parameters] ServerPort = 1113 SchedulerInterval = 1 ... [HTTPServer] ServerPort = 8893 ... [URIQA] DefaultHost = localhost:8893 ... [Replication] ServerName = db3 ... ---+++Database DSNs Use the ODBC Administrator on your Virtuoso host (e.g., on Windows, *Start* menu -> *Control Panel* -> *Administrative Tools* -> Data Sources (ODBC); on Mac OS X, /Applications/Utilities/OpenLink ODBC Administrator.app) to create a System DSN for each of db1, db2, db3, with names db1, db2 and db3, respectively. ---+++Install Conductor package On each of the 3 Virtuoso instances install the [[https://virtuoso.openlinksw.com/download/][conductor_dav.vad]] package. ---++Create a Publication on the Host Virtuoso Instance -- db1 1 Go to *Conductor* -> *Replication* -> *Transactional* -> *Publications*: %BR%%BR%%BR%%BR% 1 Click Enable RDF Publishing. 1 A publication with the name *RDF Publication* should be created: %BR%%BR%%BR%%BR% 1 Click the link which is the publication name. 1 You will be shown the publication items page: %BR%%BR%%BR%%BR% 1 Enter for Graph IRI http://example.org %BR%%BR%%BR%%BR% 1 Click Add New. 1 The item will be created and shown in the list of items for the currently viewed publication. %BR%%BR%%BR%%BR% ---++Insert Data into a Named Graph on the Host Virtuoso Instance There are several ways to insert data into a Virtuoso Named Graph. In this Guide, we will use the Virtuoso Conductor's Import RDF feature: 1. In the Virtuoso Conductor, go to *Linked Data* -> *Quad Store Upload*: %BR%%BR%%BR%%BR% 1 In the presented form: * Tick the box for *Resource URL* and enter your resource URL, for e.g.: http://www.openlinksw.com/dataspace/person/kidehen@openlinksw.com#this * Enter for *Named Graph IRI*: http://example.org %BR%%BR%%BR%%BR% 1 Click Upload 1 A successful upload will result in this message: %BR%%BR%%BR%%BR% 1 Check the inserted triples by executing a query like the following against the SPARQL endpoint, http://cname:port/sparql -- SELECT * FROM WHERE { ?s ?p ?o } %BR%%BR%%BR%%BR% 1 See how many triples have been inserted in your graph: SELECT COUNT(*) FROM WHERE { ?s ?p ?o } %BR%%BR%%BR%%BR% ---++Subscribe to the Publication on the a Destination Virtuoso Instance -- db2, db3, etc. 1 Go to *Conductor* -> *Replication* -> *Transactional* -> *Subscriptions*: %BR%%BR%%BR%%BR% 1 Click New Subscription: %BR%%BR%%BR%%BR% 1 Specify a new Data Source Enter or selected target data source from the available connected Data Sources: %BR%%BR%%BR%%BR% %BR%%BR%%BR%%BR% 1 Click Publications list: %BR%%BR%%BR%%BR% 1 Select the RDF Publication and click List Items: %BR%%BR%%BR%%BR% 1 Click Subscribe. 1 The subscription will be created: %BR%%BR%%BR%%BR% 1 Click Sync. 1 Check the retrieved triples by executing the following query: SELECT * FROM WHERE {?s ?p ?o} %BR%%BR%%BR%%BR% 1 See how many triples have been inserted into your graph by executing the following query: SELECT COUNT(*) FROM WHERE {?s ?p ?o} %BR%%BR%%BR%%BR% These steps may be repeated for any number of Subscribers. ---++Insert Triples into the Host Virtuoso Instance Graph and check availability at Destination Virtuoso Instance Graph 1. To check the starting count, on the Destination Virtuoso Instance SPARQL Endpoint, execute: SELECT COUNT(*) FROM WHERE { ?s ?p ?o } 1. On the Host Virtuoso Instance go to *Conductor* -> *Database* -> *Interactive SQL* and execute the following statement: SPARQL INSERT INTO GRAPH { } ; SPARQL INSERT INTO GRAPH { } ; SPARQL INSERT INTO GRAPH { } ; %BR%%BR%%BR%%BR% %BR%%BR%%BR%%BR% 1. To confirm that the triple count has increased by the number of inserted triples, execute the following on the Destination Virtuoso Instance SPARQL Endpoint: SELECT COUNT(*) FROM WHERE { ?s ?p ?o } %BR%%BR%%BR%%BR% ---++Related * [[VirtGraphReplicationChain][Replication Example: Chain Topology]] * [[VirtGraphReplicationBiDirectional][Replication Example: 2-node Bi-directional Topology]] * [[VirtGraphReplicationPSQL][Set up RDF Replication via procedure calls]] * [[http://ods.openlinksw.com/wiki/ODS/VirtPubSubHub][Example of Linked Data Usage of PubSubHubbub Implementation]] * [[VirtRdfReplScenarios][Exploit Virtuoso's Replication Functionality Web based Solutions]]