2016-07-22 3 views
2

Как я могу запросить Wikidata, чтобы все элементы, содержащие метки, содержали слово? Я пробовал это, но не работал; он ничего не получил.Как запросить элементы Wikidata, используя свои метки?

SELECT ?item ?itemLabel WHERE { 
    SERVICE wikibase:label { 
    bd:serviceParam wikibase:language "en". 
    ?item rdfs:label ?itemLabel. 
    } 
FILTER(CONTAINS(LCASE(?itemLabel), "keyword")) 
} 
LIMIT 1000 
+0

Что такое 'wikibase: label'? Без префиксов трудно сказать, что происходит не так. – AKSW

+0

PREFIX wikibase:

+0

И где информация 'wikibase: language' в этом наборе данных? Без этого соединение явно пусто в части SERVICE, которая выполняется как один запрос SPARQL. Я думаю, что это может сработать, если вы поместите первую тройку вне предложения SERVICE. – AKSW

ответ

3

После вашего вопроса и полезных замечаний, я закончил с этим запросом

SELECT ?item ?itemLabel 
WHERE { 
    ?item rdfs:label ?itemLabel. 
    FILTER(CONTAINS(LCASE(?itemLabel), "city"@en)). 
} limit 10 

За что я получил эти результаты

item   itemLabel 
wd:Q515  city 
wd:Q7930989 city 
wd:Q15253706 city 
wd:Q532039 The Eternal City 
wd:Q1969820 The Eternal City 
wd:Q3986838 The Eternal City 
wd:Q7732543 The Eternal City 
wd:Q7737016 The Golden City 
wd:Q5119  capital city 
wd:Q1555  Guatemala City 

try it here

0

Да, ты может искать по метке, например:

SELECT distinct ?item ?itemLabel ?itemDescription WHERE{ 
    ?item ?label "Something"@en. 
    ?article schema:about ?item . 
    ?article schema:inLanguage "en" . 
    ?article schema:isPartOf <https://en.wikipedia.org/>. 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }  
} 

Посмотрите на Query page.