Sparql Dbpedia不返回完整结果

Sparql Dbpedia不返回完整结果,sparql,dbpedia,Sparql,Dbpedia,DBPedia/SPARQL/语义数据初学者。我运行以下查询,以了解每个运动员的运动 select ?athlete ?sport where { ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>. #query1 ?athlete dbpedia2:sport ?sport #query2 } 它确实给出了结果,但不是我想要的全部结果。query

DBPedia/SPARQL/语义数据初学者。我运行以下查询,以了解每个运动员的运动

select ?athlete ?sport where 
{
   ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>.   #query1
   ?athlete dbpedia2:sport ?sport                             #query2
}
它确实给出了结果,但不是我想要的全部结果。query1本身返回更多的运动员,但与query2相结合,我得到的结果集要少得多

请解释一下差异。我错过什么了吗?还有什么选择


关于

您的查询将选择同时具有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>
    }
}

谢谢你的快速回复。现在,即使sport属性不受约束,它也会返回运动员。但我的目标是让每一位运动员都能得到这项运动。从结果来看,对于一名运动员来说,运动财产可能是不受约束的?既然运动员->运动的关系不完整,我该怎么做。运动->运动员关系不存在。在这种情况下,您需要更好地探索本体。rdfs:运动员子类描述了所需的信息。我在回答中添加了另一个问题。再次非常感谢。我想到了这个。请提供有关查询的反馈。选择?sport?运动员,其中{?sport rdfs:Subassof。?运动员a$sport}如果您想跳过150978中未指定rdfs:subClass of Athlome 3250的运动员,这是一个很好的选择。无需道歉:。我的意思是DBpedia上150978年的3250个运动员记录没有RDF:指定了运动员的子类别,即没有关于运动员类型的详细信息。因此,在结果集中不会看到相应的行。