2

DBPedia/SPARQL/セマンティック データの初心者。「各アスリートのスポーツを見つける」ために、次のクエリを実行しました

select ?athlete ?sport where 
{
   ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>.   #query1
   ?athlete dbpedia2:sport ?sport                             #query2
}

結果は得られますが、探している完全なセットではありません。「query1」自体はより多くのアスリートを返しますが、「query2」と組み合わせると、結果セットが大幅に少なくなります。

矛盾を説明してください。何か不足していますか?代替手段は何ですか?

よろしく

4

1 に答える 1

3

クエリは、 rdf:type プロパティと dbpedia2:sport プロパティの両方を持つすべてのアスリート ノードを選択します。optional一部のプロパティがバインドされていない場合でも、句を使用してノードを取得できます。例えば:

select ?athlete ?sport where {
    ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>. #query1
    optional {?athlete dbpedia2:sport ?sport} #query2
}

スポーツをするためのより良い方法:

select ?athlete ?type where {
    ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>.
    optional {
        ?athlete rdf:type ?type.
        ?type rdfs:subClassOf <http://dbpedia.org/ontology/Athlete>
    }
}
于 2012-04-27T18:39:42.443 に答える