Список всех субъектов, имеющих данное свойство, в Sparql из Викиданных

Я пытаюсь получить все тройки <subject, predicate, object>, которые содержат свойство P31 в качестве предиката из Викиданных, используя их интерфейс SPARQL. Думаю, запрос должен быть примерно таким.

  SELECT ?s ?p ?o WHERE {
   {
       ?s ?p ?o.
       FILTER (?p=P31)
       
   }
}

где P31 - это свойство, которое я хочу.


person darth    schedule 11.08.2017    source источник


Ответы (2)


Используя SPARQL, ваш запрос может выглядеть так

SELECT ?subject ?object WHERE {
  ?subject wdt:P31 ?object
}

но он наверняка достигнет тайм-аута, учитывая, что P31 или P279, как ожидается, будут установлены для каждой из (в настоящее время) 35 миллионов объектов. Однако вы можете попробовать это с ограничением: через GUI или как JSON.

Если вам действительно нужно получить список всех троек со свойством P31, единственный возможный способ, о котором я знаю, - это использовать дампы Викиданных и в конечном итоге использовать grep или _3 _ получить его подмножество.

person maxlath    schedule 11.08.2017
comment
Не могли бы вы упомянуть, как я могу использовать другие 2 возможных метода, которые вы упомянули, для получения данных в форме ‹Subject, predicate, object› для всех предикатов, имеющих P31 - person darth; 11.08.2017
comment
Большинство общедоступных конечных точек SPARQL имеют ограничение по умолчанию по очевидным причинам. Таким образом, это больше о понимании того, что один запрос не вернет весь набор результатов. Чтобы справиться с этим, нужно использовать LIMIT n OFFSET (n*i), который также известен как разбиение на страницы. - person UninformedUser; 11.08.2017
comment
@darth он имеет в виду загрузить дамп и обработать его через некоторый локальный SPARQL API, тройное хранилище или что-то еще - person UninformedUser; 11.08.2017
comment
Я имел в виду свойство предиката P31. То есть все тройки форм: ‹некоторый субъект› ‹экземпляр (который является P31)› ‹некоторый объект› - person darth; 11.08.2017
comment
Кроме того, есть ли способ получить полный список этих троек? - person darth; 11.08.2017
comment
@darth, существует частичный дамп со всеми заявлениями о членстве, однако ему больше года: tools.wmflabs.org/wikidata-exports/rdf/exports/20160801/ - person Stanislav Kralin; 11.08.2017

Попробуй это,

SELECT ?s ?p ?o WHERE {
  {
    ?s ?p ?o.
    FILTER(?p = wdt:P31)
  }
}
LIMIT 20

См. Эту person purudpd    schedule 11.08.2017