0

私は Jena SPARQL API を使用しており、推論ルールを適用した後に RDF ファイルに対してクエリを実行したいと考えています。.rulすべてのルールを含むファイルを作成しました。これらのルールを実行し、クエリを実行したいと思います。OWL を使用したときは、次のように進めました。

     OntModel model1 = ModelFactory.createOntologyModel( OntModelSpec..OWL_MEM_MICRO_RULE_INF);

    // read the RDF/XML file
    model1.read( "./files/ontology.owl", "RDF/XML" );
    model1.read( "./files/data.rdf", "RDF/XML" );

    // Create a new query
    String queryString =        
      ".....my query";
    Query query = QueryFactory.create(queryString);
    QueryExecution qe = QueryExecutionFactory.create(query, model1);
    ResultSet results =  qe.execSelect();
    ResultSetFormatter.out(System.out, results, query);

推論ルールで同じことをしたい、つまり、次のように.rulファイルをロードしたい:

model1.read( "./files/rules.rul", "RDF/XML" );

これは.rulファイルでは機能しませんでした。ルールは実行されません。ファイルをロードする方法はあり.rulますか? 前もって感謝します。

4

1 に答える 1

1

Jena ルールは RDF ではなく、モデルに読み込まれません。

RDFS は RDF であり、ルールを使用して内部的に実装されます。

推論モデルを構築するには:

    Model baseData = ... 
    List<Rule> rules = Rule.rulesFromURL("file:YourRulesFile") ;
    Reasoner reasoner = new GenericRuleReasoner(rules);
    Model infModel = ModelFactory.createInfModel(reasoner, baseData) ;

ModelFactoryモデルを直接構築する他の方法 (RDFS 推論など)については、を参照してください。

于 2016-02-02T09:53:25.290 に答える