2017-01-23 11 views
2

根據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

回答

2

因爲您的SPARQL查詢,特別是屬性路徑是錯誤的。 類型由subClassOf(wdt:P279)連接,但你使用wdt:P31*

它的時候要wdt:P31/wdt:P279*

的差異見https://www.wikidata.org/wiki/Property:P279https://www.wikidata.org/wiki/Property:P31要求instance-of關係的關閉。

+0

謝謝!所以基本上,我對軍事行動的查詢只返回那些也不是子類的軍事行動,所以也是子類戰鬥的入口沒有被返回。它是否正確? – datorum

相關問題