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 回答