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 回答