クラスの最も具体的なプロパティを取得しようとしていますが、行き詰まります。結果セットにサブプロパティを持つプロパティを除いて、特定のクラスに適用されるすべてのプロパティ(スーパークラスから継承されたプロパティを含む)を引き出したいと思います。
たとえば、プロパティの1つがatLocationであるクラスPopulationと、 Refugeesと呼ばれるPopulationのサブクラスがあるとします。難民には、atLocationのサブプロパティであるプロパティcurrentLocationがあります。
したがって、必要なのは、Populationを入力した場合はatLocationのみを、 Refugeesを入力した場合はcurrentLocationのみを取得する一般的なクエリです。私が持っているのはこれです:
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix ex: <http://example.org/vocabulary#>
SELECT DISTINCT ?prop WHERE {
ex:Refugee rdfs:subClassOf* ?domain .
?prop rdfs:domain ?domain .
?subprop rdfs:domain ?domain .
FILTER NOT EXISTS { ?subprop rdfs:subPropertyOf ?prop . }
} ORDER BY ?prop
ただし、これによりatLocation と currentLocationの両方が得られます。
これは1つのクエリで可能ですか?これを解決する方法についてのアイデアはありがたいです!