Search in sources :

Example 1 with RdfDataManager

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);
    }
}
Also used : RdfDataManager(uk.ac.rothamsted.rdf.neo4j.load.support.RdfDataManager) Dataset(org.apache.jena.query.Dataset) CypherIndexer(uk.ac.rothamsted.rdf.neo4j.load.support.CypherIndexer)

Example 2 with RdfDataManager

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
}
Also used : RdfDataManager(uk.ac.rothamsted.rdf.neo4j.load.support.RdfDataManager) Neo4jDataManager(uk.ac.rothamsted.rdf.neo4j.load.support.Neo4jDataManager) Driver(org.neo4j.driver.v1.Driver) CyNodeLoadingProcessor(uk.ac.rothamsted.rdf.neo4j.load.support.CyNodeLoadingProcessor) CyNodeLoadingHandler(uk.ac.rothamsted.rdf.neo4j.load.support.CyNodeLoadingHandler) CyRelationLoadingHandler(uk.ac.rothamsted.rdf.neo4j.load.support.CyRelationLoadingHandler) CyRelationLoadingProcessor(uk.ac.rothamsted.rdf.neo4j.load.support.CyRelationLoadingProcessor) Test(org.junit.Test) RdfDataManagerTest(uk.ac.rothamsted.rdf.neo4j.load.support.RdfDataManagerTest)

Example 3 with RdfDataManager

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!
}
Also used : RdfDataManager(uk.ac.rothamsted.rdf.neo4j.load.support.RdfDataManager) Neo4jDataManager(uk.ac.rothamsted.rdf.neo4j.load.support.Neo4jDataManager) Driver(org.neo4j.driver.v1.Driver) ConfigItem(uk.ac.rothamsted.rdf.neo4j.load.MultiConfigCyLoader.ConfigItem) CyNodeLoadingProcessor(uk.ac.rothamsted.rdf.neo4j.load.support.CyNodeLoadingProcessor) CyNodeLoadingHandler(uk.ac.rothamsted.rdf.neo4j.load.support.CyNodeLoadingHandler) CyRelationLoadingHandler(uk.ac.rothamsted.rdf.neo4j.load.support.CyRelationLoadingHandler) CyRelationLoadingProcessor(uk.ac.rothamsted.rdf.neo4j.load.support.CyRelationLoadingProcessor) LinkedList(java.util.LinkedList) Test(org.junit.Test) RdfDataManagerTest(uk.ac.rothamsted.rdf.neo4j.load.support.RdfDataManagerTest)

Aggregations

RdfDataManager (uk.ac.rothamsted.rdf.neo4j.load.support.RdfDataManager)3 Test (org.junit.Test)2 Driver (org.neo4j.driver.v1.Driver)2 CyNodeLoadingHandler (uk.ac.rothamsted.rdf.neo4j.load.support.CyNodeLoadingHandler)2 CyNodeLoadingProcessor (uk.ac.rothamsted.rdf.neo4j.load.support.CyNodeLoadingProcessor)2 CyRelationLoadingHandler (uk.ac.rothamsted.rdf.neo4j.load.support.CyRelationLoadingHandler)2 CyRelationLoadingProcessor (uk.ac.rothamsted.rdf.neo4j.load.support.CyRelationLoadingProcessor)2 Neo4jDataManager (uk.ac.rothamsted.rdf.neo4j.load.support.Neo4jDataManager)2 RdfDataManagerTest (uk.ac.rothamsted.rdf.neo4j.load.support.RdfDataManagerTest)2 LinkedList (java.util.LinkedList)1 Dataset (org.apache.jena.query.Dataset)1 ConfigItem (uk.ac.rothamsted.rdf.neo4j.load.MultiConfigCyLoader.ConfigItem)1 CypherIndexer (uk.ac.rothamsted.rdf.neo4j.load.support.CypherIndexer)1