Jena SPARQL API使用推理规则文件

时间:2016-02-01 21:40:08

标签: sparql rdf jena semantic-web jena-rules

我正在使用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文件的任何想法?提前谢谢。

1 个答案:

答案 0 :(得分: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) ;

有关直接构建模型的其他方法(例如,RDFS推断),请参阅ModelFactory