Записи Wikidata, которые не могут быть получены с помощью запросов SPARQL? - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь выполнить простой запрос, ища элемент по его ярлыку Engli sh. По какой-то причине некоторые записи не отображаются. Большинство из них в порядке, но некоторые нет. Я не могу точно определить, почему.

Пример: oyster bed. Вот запись: https://www.wikidata.org/wiki/Q65953972

Это запрос:

SELECT distinct ?item ?itemLabel ?itemDescription WHERE {  
        ?item ?label 'oyster bed'@en.  
        ?article schema:about ?item .
        ?article schema:inLanguage 'en' .
        SERVICE wikibase:label { bd:serviceParam wikibase:language 'en'. }
  }

и я ничего не получаю.

Тот же запрос с oyster дает ожидаемый результат.

Что я делаю не так?

1 Ответ

0 голосов
/ 22 марта 2020

Подсказка шляпы @UninformedUser помогла.

Как новичок SPARQL ie, я не осознавал, что ?article было неявным JOIN.

SELECT distinct ?item ?itemLabel ?itemDescription WHERE {  
        ?item ?label 'oyster bed'@en.  
        OPTIONAL { ?article schema:about ?item .
        ?article schema:inLanguage 'en' . }
        SERVICE wikibase:label { bd:serviceParam wikibase:language 'en'. }
  }

должен использоваться, если требуется статья, но если в этом нет реальной необходимости, запрос можно упростить до:

SELECT distinct ?item ?itemLabel ?itemDescription WHERE {  
        ?item ?label 'oyster bed'@en.  
        SERVICE wikibase:label { bd:serviceParam wikibase:language 'en'. }
  }
...