Как считать вещи с некоторым свойством - PullRequest
0 голосов
/ 04 июля 2018

Используя https://query.wikidata.org Мне нужно посчитать количество Q* элементов викиданных, которые имеют оператор с P402. Что-то вроде

SELECT (COUNT(?item) AS ?count) WHERE {?item wdt:P402.}

но, конечно, это неверный запрос.

1 Ответ

0 голосов
/ 04 июля 2018

В предложении WHERE не указан допустимый базовый шаблон тройки: тройка RDF состоит из трех элементов (субъекта, предиката и объекта), где шаблон содержит только два элемента. Не слишком хорошо зная словарный запас Wikidata, я буду считать, что wdt:P402 - это предикат, который вас интересует. Если это так, в вашем шаблоне отсутствует переменная или заполнитель для объекта тройного шаблона.

Чтобы исправить это, вы можете сделать что-то вроде этого:

SELECT (COUNT(?item) AS ?count) WHERE {?item wdt:P402 ?object.}

Или (поскольку вас не интересует значение объекта), используйте вместо этого пустой узел:

SELECT (COUNT(?item) AS ?count) WHERE {?item wdt:P402 [].}

Наконец, если вы хотите убедиться, что элементы, имеющие более одного значения для этого свойства, не учитываются более одного раза, вам также необходимо добавить в свой запрос предложение DISTINCT:

SELECT (COUNT(DISTINCT ?item) AS ?count) WHERE {?item wdt:P402 [].}
...