解決できないOWLとSPARQLの質問があります。私はいくつかのクラスを定義しましたが、問題の質問のために重要なのは3つだけです:人、男性、女性;そして、その定義は、以下のようになります。その後、推論を使用したSPARQLクエリのOWLのクラスとサブクラス
<#People> a owl:Class ;
rdfs:label "People"@en .
<#Men> a owl:Class ;
rdfs:subClassOf <#People> ;
rdfs:label "Men"@en .
<#Women> a owl:Class ;
rdfs:subClassOf <#People> ;
rdfs:label "Women"@en .
例えばRDFのデータ:
<rdf:Description rdf:about="Registration#1">
<rdfs:label>ARCHEOLOGY GRADUATE</rdfs:label>
<ex:BranchKnowledge>ARTS AND HUMANITIES</ex:BranchKnowledge>
<ex:Degree>ARCHEOLOGY GRADUATE</ex:Degree>
<ex:Men rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">63</ex:Men>
<ex:Women rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">99</ex:Women>
<dcterms:coverage>2015/2016</dcterms:coverage>
</rdf:Description>
私は、各データの男性と女性の数を取得したい場合は、私が手私は今、男性と女性の合計数を取得したい場合は、両方がPeoplであることを推測
SELECT ?X ?degree ?branch ?men ?women
WHERE {
?X ex:Degree ?degree .
?X ex:BranchKnowledge ?branch .
?X ex:Men ?men .
?X ex:Women ?women
}
:次のクエリを持つこと電子、私は両方の人々のサブクラスなので、私は次のクエリ作ることができると考えていた:
SELECT ?X ?degree ?branch ?people
WHERE {
?X ex:Degree ?degree .
?X ex:BranchKnowledge ?branch .
?X ex:People ?people
}
しかしを私はどんな結果を得ることはありません。
私がやりたいことや何が問題になるのかについて、クラスとサブクラスの関係を誤って構成しましたか? (私はVirtuosoサーバーで作業しています)。
OWLクラスとOWLデータプロパティとして 'Men'と' Women'に同じ名前のpunningを使用していることに注意してください。なぜあなたがこれをやっているのか分かりません。 – AKSW
次に、 'ex:People'をプロパティとして使用しているので、' ex:Men'と 'ex:Women'を' ex:People'のサブプロパティとして定義する必要があります。そして、サポートされていれば、トリプルストアで推論を有効にする必要があります。 – AKSW
しかし、もっと重要なのは、これは2行にしかなりません。つまり、 'sum'関数を使用してSPARQLクエリで集計を行う必要があります。 – AKSW