2017-07-26 70 views
0

如何構成查詢以查詢給定實體上屬性的英文標籤。維基數據查詢查詢屬性標籤

該詢問提供的P31的ID:

SELECT ?item ?itemLabel ?instance_of WHERE { 
    ?item wdt:P646 "/m/09c7w0". 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } 
    OPTIONAL { 
    ?item wdt:P31 ?instance_of.} 
    } 
} 
LIMIT 1 

我如何得到P31,而不是標籤?

此外,有沒有一種巧妙的方法來獲得P31的「最佳」值,可能是數字ID最低的值?一些詳細的實體具有非常嘈雜的值。例如,對於Q30,「美國」,我寧願將「國家」看作我的instance_of,而不是「聯合國成員國」。

+0

你應該明白*標籤服務如何*作品...不要複製從其他來源粘貼不知道查詢做什麼!將'Label'追加到現有的變量是要走的路 - >'?instance_ofLabel'順便說一下,你知道instance_of關係是什麼意思嗎?如果是這樣,我會使用另一個變量名稱,但的確是您的決定。從我的角度來看,這個屬性表示一個實體的類型。 – AKSW

+0

定義「最佳方式」。最低的數字ID表示什麼?確切地說,沒有什麼 - 它只是一個ID。實際上,LIMIT 1隨機返回一種類型的實體。那麼,你如何定義一個實體的「最佳類型」呢?您需要一些正式的標準,因爲SPARQL是一種正式的查詢語言。 – AKSW

+0

我並不是不同意類型,但''instance''是謂詞'P31'的逐字英文標籤。不,身份證本身並不代表任何東西,但它在維基數據中很重要。 ID通常按升序創建,而早期創建的實體往往是更一般的概念,而較新的實體通常更隱晦或更深奧。 – bhan

回答

0

謝謝AKSW。標籤服務適用於給定的一個變量與匹配的後綴Label屬性:

SELECT ?item ?itemLabel ?instance_of ?instance_ofLabel WHERE { 
    ?item wdt:P646 "/m/09c7w0". 
    OPTIONAL { 
    ?item wdt:P31 ?instance_of. 
    } 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } 
} 
LIMIT 1