use of uk.ac.rothamsted.rdf.neo4j.load.support.RdfDataManager in project rdf2neo by Rothamsted.
the class SimpleCyLoader method load.
/**
* <p>Uses the {@link #getCyNodeLoader()} and {@link #getCyRelationLoader()} to map data from an RDF/TDB
* data source into Cypher entities and load them into a pre-configured Neo4j server.</p>
*
* <p>
* opts [ 0 ] = true, means process Cypher nodes.<br/>
* opts [ 1 ] = true, means process Cypher relations.<br/>
* opts [ 2 ] = true, means process Cypher indices (if {@link #getCypherIndexer()} is defined).<br/>
* </p>
*
* <p>I opts is null, all the three operations above are run in the same sequence.</p>
*
* <p>Nodes are always loaded before relations, indices are created the end of all other operations
* this simplify relation DDL creation commands.</p>
*/
@Override
public void load(String tdbPath, Object... opts) {
try {
RdfDataManager rdfMgr = this.getRdfDataManager();
rdfDataManager.open(tdbPath);
Dataset ds = rdfMgr.getDataSet();
String[] nameStr = { StringUtils.trimToEmpty(this.getName()) };
if (!nameStr[0].isEmpty())
nameStr[0] = "[" + nameStr[0] + "] ";
Txn.executeRead(ds, () -> log.info("{}Sending {} RDF triples to Cypher", nameStr[0], ds.getDefaultModel().size()));
// Nodes
boolean doNodes = opts != null && opts.length > 0 ? (Boolean) opts[0] : true;
if (doNodes)
this.getCyNodeLoader().process(rdfMgr, opts);
// Relations
boolean doRels = opts != null && opts.length > 1 ? (Boolean) opts[1] : true;
if (doRels)
this.getCyRelationLoader().process(rdfMgr, opts);
// User-defined indices
boolean doIdx = opts != null && opts.length > 2 ? (Boolean) opts[2] : true;
if (doIdx) {
CypherIndexer indexer = this.getCypherIndexer();
if (indexer != null)
indexer.index();
}
log.info("{}RDF-Cypher conversion finished", nameStr[0]);
} catch (Exception ex) {
throw new RuntimeException("Error while running the RDF/Cypher loader:" + ex.getMessage(), ex);
}
}
use of uk.ac.rothamsted.rdf.neo4j.load.support.RdfDataManager in project rdf2neo by Rothamsted.
the class CypherLoaderIT method testLoading.
@Test
public void testLoading() throws Exception {
try (Driver neoDriver = GraphDatabase.driver("bolt://127.0.0.1:7687", AuthTokens.basic("neo4j", "test"));
RdfDataManager rdfMgr = new RdfDataManager(RdfDataManagerTest.TDB_PATH);
Neo4jDataManager neoMgr = new Neo4jDataManager(neoDriver);
SimpleCyLoader cyloader = new SimpleCyLoader()) {
// TODO: configurator, multiple config sets
CyNodeLoadingHandler cyNodeHandler = new CyNodeLoadingHandler();
CyRelationLoadingHandler cyRelHandler = new CyRelationLoadingHandler();
cyNodeHandler.setLabelsSparql(IOUtils.readResource("dbpedia_node_labels.sparql"));
cyNodeHandler.setNodePropsSparql(IOUtils.readResource("dbpedia_node_props.sparql"));
cyNodeHandler.setRdfDataManager(rdfMgr);
cyNodeHandler.setNeo4jDataManager(neoMgr);
cyRelHandler.setRelationTypesSparql(IOUtils.readResource("dbpedia_rel_types.sparql"));
cyRelHandler.setRelationPropsSparql(IOUtils.readResource("dbpedia_rel_props.sparql"));
cyRelHandler.setRdfDataManager(rdfMgr);
cyRelHandler.setNeo4jDataManager(neoMgr);
CyNodeLoadingProcessor cyNodeProc = new CyNodeLoadingProcessor();
cyNodeProc.setNodeIrisSparql(IOUtils.readResource("dbpedia_node_iris.sparql"));
cyNodeProc.setConsumer(cyNodeHandler);
CyRelationLoadingProcessor cyRelProc = new CyRelationLoadingProcessor();
cyRelProc.setConsumer(cyRelHandler);
cyloader.setCyNodeLoader(cyNodeProc);
cyloader.setCyRelationLoader(cyRelProc);
cyloader.load(RdfDataManagerTest.TDB_PATH);
// TODO: test!
}
// try neoDriver
}
use of uk.ac.rothamsted.rdf.neo4j.load.support.RdfDataManager in project rdf2neo by Rothamsted.
the class CypherLoaderIT method testMultiConfigLoading.
@Test
public void testMultiConfigLoading() throws Exception {
try (MultiConfigCyLoader cymloader = new MultiConfigCyLoader()) {
cymloader.setCypherLoaderFactory(() -> {
// This will eventually be managed by Spring
RdfDataManager rdfMgr = new RdfDataManager();
Driver neoDriver = GraphDatabase.driver("bolt://127.0.0.1:7687", AuthTokens.basic("neo4j", "test"));
Neo4jDataManager neoMgr = new Neo4jDataManager(neoDriver);
CyNodeLoadingHandler cyNodeHandler = new CyNodeLoadingHandler();
CyRelationLoadingHandler cyRelHandler = new CyRelationLoadingHandler();
cyNodeHandler.setRdfDataManager(rdfMgr);
cyNodeHandler.setNeo4jDataManager(neoMgr);
cyRelHandler.setRdfDataManager(rdfMgr);
cyRelHandler.setNeo4jDataManager(neoMgr);
CyNodeLoadingProcessor cyNodeProc = new CyNodeLoadingProcessor();
cyNodeProc.setConsumer(cyNodeHandler);
CyRelationLoadingProcessor cyRelProc = new CyRelationLoadingProcessor();
cyRelProc.setConsumer(cyRelHandler);
SimpleCyLoader cyloader = new SimpleCyLoader();
cyloader.setCyNodeLoader(cyNodeProc);
cyloader.setCyRelationLoader(cyRelProc);
cyloader.setRdfDataManager(rdfMgr);
return cyloader;
});
List<ConfigItem> config = new LinkedList<>();
config.add(new ConfigItem("places", readResource("dbpedia_node_iris.sparql"), readResource("dbpedia_node_labels.sparql"), readResource("dbpedia_node_props.sparql"), readResource("dbpedia_rel_types.sparql"), readResource("dbpedia_rel_props.sparql")));
config.add(new ConfigItem("people", readResource("dbpedia_people_iris.sparql"), readResource("dbpedia_people_labels.sparql"), readResource("dbpedia_people_props.sparql"), readResource("dbpedia_people_rel_types.sparql"), null));
cymloader.setConfigItems(config);
cymloader.load(RdfDataManagerTest.TDB_PATH);
}
// TODO: test!
}
Aggregations