如何让我的Fuseki服务器从文件中读取推理规则?

时间:2017-03-22 02:13:34

标签: rdf fuseki apache-jena

我是Apache Jena和Fuseki的新手。我已经安装了Apache Jena Fuseki作为一个独立的服务器,我正在尝试定义一个非常简单的推理规则,看起来,我没有正确配置它。我的配置文件 config_new.ttl 如下所示:

@prefix :        <#> .
@prefix fuseki:  <http://jena.apache.org/fuseki#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix ao:      <http://ao.com> .

[] rdf:type fuseki:Server ;
   fuseki:services (
       <#mainservice>
   ) .

<#mainservice> rdf:type fuseki:Service ;
    fuseki:name                       "mainservice" ;  
    fuseki:serviceQuery               "sparql"      ;   
    fuseki:serviceQuery               "query"       ;   
    fuseki:serviceUpdate              "update"      ;   
    fuseki:serviceUpload              "upload"      ;   
    fuseki:serviceReadWriteGraphStore "data"        ;   
    fuseki:serviceReadGraphStore      "get"         ;   
    fuseki:dataset                    <#ao>         ;
    .

### In-memory, initially empty.
## This database set-up allows OWL inference.
<#ao> rdf:type ja:MemoryModel ;
                ja:defaultGraph <#infGraph> .

<#infGraph>  rdf:type ja:InfModel ;
             ja:reasoner [ ja:rulesFrom <file:inference_rules.rules> ; ] .

我正在从控制台启动服务器:

./fuseki-server --update --file=config_new.ttl /mainservice

它正在启动,我可以从网页上传一些数据并成功查询,但看起来它没有读取文件 inference_rules.rules 。即使文件名错误或文件不存在或文件内容不正确,我也不会收到任何错误,规则也无效。

我错过了什么?

这里有第二个问题。显然,我还没有,但是让我把这里的内容放在 inference_rules.rules 中。我试图定义一个简单的传递规则 - if(A是B)和(B是C),然后A是C

@prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
@prefix ex: http://example.com/
@prefix xs: http://www.w3.org/2001/XMLSchema#
@prefix ao: http://ao.com/

[isATransitive:
(?a ao:isA ?b)
(?b ao:isA ?c)
                 ->
                 (?a ao:isA ?c)
         ]

我是否正确定义了它?

1 个答案:

答案 0 :(得分:1)

在说:

的部分
<#ao> rdf:type ja:MemoryModel ;
                ja:defaultGraph <#infGraph> .

<#infGraph>  rdf:type ja:InfModel ;
             ja:reasoner [ ja:rulesFrom <file:inference_rules.rules> ; ] .

<#ao>必须是ja:RDFDataset类型,而不是模型。

<#ao> rdf:type ja:RDFDataset ;