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>.
}
ありがとうございます。
EDIT:
私だけでもエレガントではない方法であれば、それを解決してきました。それを行うための適切な方法は以下のようになりSPARQL 1.1 specificationに基づいて
SELECT ?entity
WHERE {
?entity rdf:type ?type.
?type rdfs:subClassOf* :C.
}
トリプルストアによっては、動作しない場合があります。すべてのトリプルストアがプロパティパス式を実装しているわけではありません。 –
ありがとう、それは働いた! – auino
@msalvadores最新のトリプルストアがあるかもしれないが、プロパティパスはそれをSPARQL 1.1にしたので、現在の標準をサポートするトリプルストアはすべてプロパティパスをサポートする。 –