我必須在SPARQL中獲取類C的所有實例和C的子類(直接或間接)。SPARQL:獲取某個類的子類的所有實體
我得到C的所有直接子類中這樣說:
SELECT ?entity
WHERE {
?subclass rdfs:subClassOf :C .
?entity rdf:type ?subclass .
}
但我不能得到一個間接子類的實例既不C.
的任何實例據我所知(我已經預先計算了它們)所有子類(C的直接和間接),並且我可以構建一個動態查詢,是否有可能構建如下的查詢?
SELECT ?entity
WHERE {
?entity rdf:type in <list>.
}
感謝大家。
編輯:
我剛剛解決了它,即使在不優雅的方式。
SELECT ?entity
WHERE {
{ ?entity rdf:type :C }
UNION { ?entity rdf:type :SubClass1 }
UNION { ?entity rdf:type :SubClass2 }
UNION { ?entity rdf:type :SubClass3 }
}
根據三重商店,這可能或可能不起作用。並非所有的三重商店都實現屬性路徑表達式 – 2012-02-09 19:40:35
謝謝,它的工作! – auino 2012-02-10 16:19:36
@msalvadores作爲一個更新,儘管仍然可能有較舊的三重存儲,但屬性路徑將其轉換爲SPARQL 1.1,因此任何支持當前標準的三重存儲都將支持屬性路徑。 – 2014-01-13 13:57:01