2017-01-07 625 views
0

我可以通過標籤獲取項目和它的屬性:通過QID獲取屬性?

SELECT distinct ?item ?itemLabel ?itemDescription 
(SAMPLE(?DR) as ?DR) (SAMPLE(?article)as ?article) 
WHERE {?item wdt:P31 wd:Q5. 
?item ?label "Einstein"@en 
OPTIONAL{?item wdt:P569 ?DR .} 
?article schema:about ?item . 
?article schema:inLanguage "en" . 
?article schema:isPartOf <https://en.wikipedia.org/>. 
OPTIONAL{?item wdt:P570 ?RIP .} 
OPTIONAL{?item wdt:P18 ?image .} 
SERVICE wikibase:label 
{ bd:serviceParam wikibase:language "en". }} 
GROUP BY ?item ?itemLabel ?itemDescription 

參見Wikidata Query Services

我怎樣才能使用QID來代替標籤?

+0

什麼是QID?它是阿爾伯特愛因斯坦的URI嗎?如果是這樣,只需用它替換變量「?item」。 – AKSW

+0

在這種情況下QID = Q937,替換?項不起作用 – Alexan

+0

您必須在SPARQL中使用完整的URI或前綴。只是Q937不是一個URI,這將是http://www.wikidata.org/entity/Q937。然後你可以刪除前兩個三重模式。請參閱下面的答案。 – AKSW

回答

2

使用URI而不是變量?item將得到一個基於實體愛因斯坦的信息:

PREFIX schema: <http://schema.org/> 
PREFIX bd: <http://www.bigdata.com/rdf#> 
PREFIX wdt: <http://www.wikidata.org/prop/direct/> 
PREFIX wikibase: <http://wikiba.se/ontology#> 

SELECT DISTINCT ?item ?itemLabel ?itemDescription (SAMPLE(?DR) AS ?DRSample) (SAMPLE(?article) AS ?articleSample) 
WHERE 
    { ?article schema:about  ?item ; 
       schema:inLanguage "en" ; 
       schema:isPartOf <https://en.wikipedia.org/> 
    FILTER (?item = <http://www.wikidata.org/entity/Q937>) 
    OPTIONAL 
     { ?item wdt:P569 ?DR } 
    OPTIONAL 
     { ?item wdt:P570 ?RIP } 
    OPTIONAL 
     { ?item wdt:P18 ?image } 
    SERVICE wikibase:label 
     { bd:serviceParam 
        wikibase:language "en" 
     } 
    } 
GROUP BY ?item ?itemLabel ?itemDescription 
+0

你的答案可以應用到我的其他問題:http://opendata.stackexchange.com/questions/10334/get -items-properties-know-qid – Alexan

1

如果您已經有了實體的QID您正在尋找的,只是查找它的屬性和標籤,你最好使用Wikidata API wbgetentities module

在愛因斯坦(Q937)的情況下,將給予以下API調用: https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q937&format=json

+0

但我可以使用SPARQL嗎? – Alexan

+0

你可以做一些像'wd:Q937?property?value'([try it](https://query.wikidata.org/#SELECT%20%3Fproperty%20%3FpropertyLabel%20%3Fvalue%20%3FvalueLabel) %20WHERE%20%7B%0A%20%20wd%3AQ937%20%3Fproperty%20%3Fvalue%20%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%0A%20%20%20%20bd% )但是,這將是一個混亂的解析,沒有我知道的好處。 – maxlath

+0

這個json非常大。我如何獲得唯一所需的信息,例如:標籤,說明,生日,圖像鏈接和維基百科鏈接? – Alexan

1

您可以使用已知的QID BIND

BIND(wd:Q937 AS ?item). 
... 
+0

是的,它的工作。我應該使用BIND還是FILTER?哪個更好? – Alexan