簡體   English   中英

在端點SPARQL中添加RDFS推理規則支持

[英]add RDFS inference rules support in endpoint SPARQL

我已經在OpenLink Virtuoso上創建了一個端點SPAQL。 一切正常,但我必須訪問Container中的數據,尤其是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>

現在我看到要訪問容器中的數據,我可以使用rdfs:memberFILTER (strstarts(str(?prop), str(rdf:_)) 在這里解釋

但是對於我的項目,我必須采用第一個解決方案,因為我正在使用Silk,並且我將使用?a/myrdf:has_stoptimes/rdfs:member類的代碼語法,而無需使用“復雜”過濾器。

我試圖按照本指南進行操作,但是查詢終結點並沒有達到我的期望。

所以我的問題是:如何在Virtuoso端點SPARQL上查詢?a/myrdf:has_stoptimes/rdfs:member ?我必須在端點SPARQL中添加哪些推理規則?

先感謝您


更新

我在Virtuoso中創建了以下推理規則:

ttlp (' @prefix rdfs:  .
        @prefix rdf:  .
  rdfs:Container rdf:type rdfs:Class ; rdfs:subClassOf rdfs:Resource .
  rdfs:ContainerMembershipProperty a rdfs:Class ; rdfs:subClassOf rdf:Property .
  rdf:Seq rdf:type rdfs:Class ; rdfs:subClassOf rdfs:Container .
  rdfs:member rdf:type rdf:Property ; rdfs:domain rdfs:Resource ; rdfs:range rdfs:Resource .
  ', '', 'http://localhost:8890/schema/test') ;

查詢SPARQL端點沒有任何工作,例如:

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

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

在我嘗試將以下行添加到ttl文件后: rdf:_1 rdfs:subPropertyOf rdfs:member 這樣,它就可以工作,但顯然結果僅適用於容器的第一個元素。 因此,為所有rdf:_n添加一行非常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

?x ?a [ has_stoptimes/rdfs:member ?y ] .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM