Load DBpedia locally using Jena TDB?

后端 未结 1 700
粉色の甜心
粉色の甜心 2020-12-16 04:04

I need to perform a query against DBpedia:

SELECT DISTINCT ?poi ?lat ?long ?photos ?template ?type ?label WHERE {
           


        
相关标签:
1条回答
  • 2020-12-16 04:10

    To let Jena index locally :

    /** The Constant tdbDirectory. */
    public static final String tdbDirectory = "C:\\TDBLoadGeoCoordinatesAndLabels"; 
    
    /** The Constant dbdump0. */
    public static final String dbdump0 = "C:\\Users\\Public\\Documents\\TDB\\dbpedia_3.8\\dbpedia_3.8.owl";
    
    /** The Constant dbdump1. */
    public static final String dbdump1 = "C:\\Users\\Public\\Documents\\TDB\\geo_coordinates_en\\geo_coordinates_en.nt";
    
     ...
    
    Model tdbModel = TDBFactory.createModel(tdbDirectory);<\n>
    
    /*Incrementally read data to the Model, once per run , RAM > 6 GB*/
    FileManager.get().readModel( tdbModel, dbdump0);
    FileManager.get().readModel( tdbModel, dbdump1, "N-TRIPLES");
    FileManager.get().readModel( tdbModel, dbdump2, "N-TRIPLES");
    FileManager.get().readModel( tdbModel, dbdump3, "N-TRIPLES");
    FileManager.get().readModel( tdbModel, dbdump4, "N-TRIPLES");
    FileManager.get().readModel( tdbModel, dbdump5, "N-TRIPLES");
    FileManager.get().readModel( tdbModel, dbdump6, "N-TRIPLES");
    tdbModel.close();
    

    To query Jena:

    String queryStr = "dbpedia query ";
    
    Dataset dataset = TDBFactory.createDataset(tdbDirectory);
    Model tdb = dataset.getDefaultModel();
    
    Query query = QueryFactory.create(queryStr);
    QueryExecution qexec = QueryExecutionFactory.create(query, tdb);
    
    /*Execute the Query*/
    ResultSet results = qexec.execSelect();
    
    while (results.hasNext()) {
        // Do something important
    }
    
    qexec.close();
    tdb.close() ;
    
    0 讨论(0)
提交回复
热议问题