[英]SPARQL all predicate-object pairs of subject and all its superclasses
想象一下,你做了一些瘋狂的事情,並將面向對象的模型存儲為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.