簡體   English   中英

SPARQL主題及其所有超類的所有謂詞 - 對象對

[英]SPARQL all predicate-object pairs of subject and all its superclasses

想象一下,你做了一些瘋狂的事情,並將面向對象的模型存儲為RDF圖。

RDF圖

顯示了繼承層次結構和關聯屬性的簡化示例。

實際上,如果將一些UML類圖轉換為RDFS,則會得到這樣的圖形結構

問題是:SPARQL查詢可以提供實例化“C類”特定資源所需的所有謂詞 - 對象對。 換句話說:如何在整個繼承鏈中獲得所有謂詞 - 對象對(僅單個繼承)。

給定此圖,類的所有成員的謂詞 - 對象對:ClassC只是:

SELECT ?inst ?p ?o
WHERE {
   ?inst a :ClassC .
   Inst ?p ?o .

請記住,RDF / RDFS中沒有屬性繼承。 如果要查找ClassA所有屬性/值對以及子類的蘊含,請使用L.

SELECT ?inst ?p ?o
WHERE {
   ?cls rdfs:subClassOf* :ClassA .
   ?inst a ?cls .
   ?inst ?p ?o
}

在這方面,RDFS的工作有點落后於對OO繼承的期望。

使用來自@scotthenninger的信息,以下查詢完成了這項工作:

SELECT ?p ?o
WHERE {
   :ClassC rdfs:subClassOf* ?anySuperClass .
   ?anySuperClass ?p ?o .   
}

編輯:類似查詢獲取繼承鏈中的所有自定義屬性及其范圍:

SELECT ?prop ?obj
    WHERE {
       :ClassC rdfs:subClassOf* ?anySuperClass .
       ?prop rdfs:domain ?anySuperClass .   
       ?prop rdfs:range ?obj .
}

最終結果合並:

foo:ID         xsd:string
foo:name       xsd:string
rdfs:comment   xsd:string
foo:similarTo  :ClassD

暫無
暫無

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

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