sparql - 为什么查询子类的所有实例比查询 "parent"类获得更多结果?

标签 sparql wikidata

根据维基数据,战斗是军事行动的子类。然而,当我查询所有军事行动实例时,我得到 699 个结果,而对于所有战斗,我得到 7399 个结果。

军事行动查询

SELECT ?label WHERE {
  ?subj wdt:P31* wd:Q645883.
  ?subj rdfs:label ?label.
  FILTER((LANG(?label)) = "en")
}

战斗查询

SELECT ?label WHERE {
  ?subj wdt:P31* wd:Q178561.
  ?subj rdfs:label ?label.
  FILTER((LANG(?label)) = "en")
}

军事行动:https://www.wikidata.org/wiki/Q645883

战斗:https://www.wikidata.org/wiki/Q178561

最佳答案

因为您的 SPARQL 查询,特别是属性路径是错误的。 类型通过 subClassOf (wdt:P279) 连接,但在使用 wdt:P31* 时要求关闭 instance-of 关系>

它必须是wdt:P31/wdt:P279*

参见https://www.wikidata.org/wiki/Property:P279https://www.wikidata.org/wiki/Property:P31为了区别。

关于sparql - 为什么查询子类的所有实例比查询 "parent"类获得更多结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41799780/

相关文章:

sparql - 如何构建 Wikidata 项目列表的 SPARQL 查询

java - 如何从 Java 访问 Wikidata SPARQL 接口(interface)?

python - 如何以可读的方式从 rdflib 打印术语文字?

sparql - 使用 Fuseki 对 SPARQL 中不起作用的字符串进行查询(MAKG 数据集)

rdf - 如何知道 DBpedia 中某个实体的确切名称/URI?

sparql - 如何使用 SPARQL 在 Wikidata 上按属性过滤对象?

java - 查询 Wikidata 的实体类型

python - 使用 SPARQL 查询的 python 代码出错

使用多个数据源的 SPARQL 查询

xsd - xsd :date 上 FILTER 的意外行为