Sparql 为什么查询子类的所有实例比查询;“家长”;上课?

Sparql 为什么查询子类的所有实例比查询;“家长”;上课?,sparql,wikidata,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. ?su

根据维基数据,战斗是军事行动的一个子类。然而,当我查询所有军事行动的实例时,我得到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")
}
军事行动:


战斗:

因为您的SPARQL查询,特别是属性路径,是错误的。 类型通过子类(
wdt:P279
)连接,但在使用
wdt:P31*

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


请参见和以了解差异。

谢谢!所以基本上,我对军事行动的查询只返回那些不属于子类的军事行动,所以也属于子类battle的条目不会被返回。这是正确的吗?