Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在端点SPARQL中添加RDFS推理规则支持_Sparql_Rule_Virtuoso_Rdfs_Inference - Fatal编程技术网

在端点SPARQL中添加RDFS推理规则支持

在端点SPARQL中添加RDFS推理规则支持,sparql,rule,virtuoso,rdfs,inference,Sparql,Rule,Virtuoso,Rdfs,Inference,我已经在OpenLink Virtuoso上创建了一个端点SPAQL。 所有这些都可以正常工作,但我必须访问容器中的数据,特别是rdf:Seq 我有一张这样的序号: <myrdf:has_stoptimes> <rdf:Seq rdf:about="http://test.com/343"> <rdf:li> <myrdf:StopTime rdf:about="http://test.com/StopTime/434">

我已经在OpenLink Virtuoso上创建了一个端点SPAQL。 所有这些都可以正常工作,但我必须访问容器中的数据,特别是rdf:Seq

我有一张这样的序号:

 <myrdf:has_stoptimes>
  <rdf:Seq rdf:about="http://test.com/343">
    <rdf:li>
      <myrdf:StopTime rdf:about="http://test.com/StopTime/434">
           ...
      </ns0:StopTime>
    </rdf:li>
    <rdf:li>
      <myrdf:StopTime rdf:about="http://test.com/StopTime/435">
           ...
      </ns0:StopTime>
    </rdf:li>
  </rdf:Seq>
查询SPARQL终结点时没有任何效果,如:

define input:inference "http://localhost:8890/schema/property_rules1"

       SELECT *
        FROM 
        WHERE {?sep a rdf:Seq.
        ?seq rdfs:member ?p}
在我尝试向ttl文件添加以下行之后:
rdf:_1rdfs:subpertyof rdfs:member
。通过这种方式,它可以工作,但很明显,结果只适用于容器的第一个元素。因此,为所有的
rdf:_n
添加一行是非常不方便的,我认为这只是一个临时解决方案,它是不正确的

如果运行查询,我尝试在SILK 2.6.1和数据源的SPARQL部分添加RDF转储:

 SELECT *
    FROM 
    WHERE {?sep a rdf:Seq.
    ?seq rdfs:member ?p}

我得到了正确的结果,没有指定任何推理规则。所以我认为在SILK的这个功能中,我的端点SPARQL中缺少了一些东西,或者我说的是胡说八道吗?

您不能在属性路径中使用变量,所以您实际上不能这样做

?x ?a/has_stoptimes/rdfs:member ?y
相反,您必须在以下两者之间使用另一个变量或空白节点:

?x ?a ?z . ?z has_stoptimes/rdfs:member ?y


不太清楚你在问什么。您的意思是想使用属性路径,如
?a/has_stoptimes/rdfs:member
?是的,非常抱歉我的问题不好。但我的问题是,接收我的查询的端点SPARQL无法识别
rdfs:member
属性,因此我无法对容器的节点(rdf:Seq)进行操作。实际的错误消息是什么?您是否声明了适当的前缀?是,所有前缀都正确,没有错误消息。问题是我的rdf有类似rdf:_1,rdf:_2..rdf:_n的属性,我发现通过SPARQL查询rdf:Seq节点的唯一方法是通过rdfs:member属性。SILK生成的SPARQL查询是:
SELECT?b?v0,其中{b a.可选{b?t1.?t1?v0.}
所以问题不在于SILK或它的语法,因为如果我通过浏览器直接在SPARQL端点上查询,它无论如何都不起作用。我很确定问题在于我需要修改我的端点SPARQL,比如添加推理规则,但我不知道如何添加,特别是添加了哪一个规则。我发现一个老文档在谈论它,但非常普遍地说啊,好的。我明白了。对不起,我误解了这个问题。您的数据可以让您假设如果某个东西是一个Seq,那么它的所有属性(除了
rdf:type
)都是
rdfs:_n
属性吗?然后您可以简单地搜索
:seq789?p?元素
?x ?a ?z . ?z has_stoptimes/rdfs:member ?y
?x ?a [ has_stoptimes/rdfs:member ?y ] .