简体   繁体   English

Jena SPARQL API使用推理规则文件

[英]Jena SPARQL API using inference rules file

I am working with Jena SPARQL API, and I want to execute queries on my RDF files after applying inference rules. 我正在使用Jena SPARQL API,我想在应用推理规则后对我的RDF文件执行查询。 I created a .rul file that contains all my rules; 我创建了一个.rul文件,其中包含我的所有规则; now I want to run those rules and execute my queries. 现在,我想运行这些规则并执行查询。 When I used OWL, I proceeded this way: 当我使用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);

I want to do the same thing with inferences rules, ie, load my .rul file like this: 我想对推理规则做同样的事情,即像这样加载我的.rul文件:

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

This didn't work with .rul files, the rules are not executed. .rul文件.rul ,规则不执行。 Any ideas how to load a .rul file? 有什么想法如何加载.rul文件吗? Thanks in advance. 提前致谢。

Jena rules aren't RDF, and you don't read them into a model. 耶拿规则不是RDF,您也不会将其读入模型。

RDFS is RDF, and it is implemented internally using rules. RDFS是RDF,它使用规则在内部实现。

To build an inference model: 要构建推理模型:

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

See ModelFactory for other ways to build models (eg, RDFS inference) directly. 有关ModelFactory构建模型的其他方式(例如,RDFS推断),请参见ModelFactory

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM