2016-09-26 9 views
0

Я пытаюсь получить имя всех физических вещей (материальных понятий), о которых знают wikidata (объекты, места, страны и т. Д.), Или, другими словами, все не абстрактные.Wikidata: список всех физических объектов

Есть примеры, близкие к тому, что мне нужно, но только с глубиной: all the things that are instances of phone.

Я нашел this example, который ищет с большей глубиной и я изменил начальную точку в entity:

#Children of Genghis Khan 

#added before 2016-10 
#defaultView:Graph 
PREFIX gas: <http://www.bigdata.com/rdf/gas#> 

SELECT ?item ?itemLabel ?pic ?linkTo 
WHERE 
{ 
    SERVICE gas:service { 
    gas:program gas:gasClass "com.bigdata.rdf.graph.analytics.SSSP" ; 
       gas:in wd:Q35120 ; 
       gas:traversalDirection "Forward" ; 
       gas:out ?item ; 
       gas:out1 ?depth ; 
       gas:maxIterations 4 ; 
       gas:linkType wdt:279 . 
    } 
    OPTIONAL { ?item wdt:P40 ?linkTo } 
    OPTIONAL { ?item wdt:P18 ?pic } 
    SERVICE wikibase:label {bd:serviceParam wikibase:language "en" } 
} 

Я до сих пор не получают никаких результатов.

+0

Это кажется слишком общим вопросом. Я попробовал несколько комбинаций запросов для «физического объекта (Q223557)» и «entity (Q35120)», но я всегда получаю тайм-аут. Не могли бы вы разбить свой запрос на отдельные части, которые имеют смысл концептуально? – atineoSE

ответ

0

Как упоминалось в комментарии, ваш вопрос является слишком широким, и вы будете в конечном итоге с слишком много ответов

Глядишь для A, которые являются экземпляром подкласса B

поэтому запрос вы пункт является правильным

SELECT DISTINCT ?item 
WHERE { 
    ?item wdt:P31/wdt:P279* wd:Q35120 
} 

проблема является размер WD: Q35120 имеет много подклассов Вы можете проверить, что таким образом

SELECT ?a ?aLabel WHERE { ?a wdt:P279 wd:Q35120. 
      SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } 
} 

SELECT ?a ?aLabel WHERE { ?a wdt:P279/wdt:P279? wd:Q35120. 
      SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } 
} 

SELECT ?a ?aLabel WHERE { ?a wdt:P279/wdt:P279?/wdt:P279? wd:Q35120. 
      SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } 
} 

И так далее: вы увидите, что уже есть 40'000 + на п уровня, который огромен

Вы можете также огромное это хороший инструмент, чтобы иметь более точный обзор

https://tools.wmflabs.org/bambots/WikidataClasses.php?id=Q35120&lang=en

+1

Это на самом деле то, что мне нужно, я хочу миллионы ответов. Мне просто нужно выполнить пакетную обработку или использовать локальную копию данных, чтобы не перегружать их сервер. Благодаря! –