Почему этот запрос Wikidata SPARQL работает только для первого элемента в списке? - PullRequest
1 голос
/ 20 июня 2020

Попытка найти, есть ли свойство, которое связывает два произвольных объекта в Викиданных. Это отлично работает, если одна из сущностей не находится в списке для другой сущности. В этом случае только первый объект в списке рассматривается как связанный с другим. Например: «Python» и «объектно-ориентированный язык» (первый в списке для свойства «экземпляр») возвращают свойство, а «Python» и «язык программирования» - нет.

SELECT ?prop
WHERE {
  wd:Q28865 ?prop wd:Q9143.
}

Как заставить это работать для всех сущностей в таком списке?

1 Ответ

3 голосов
/ 20 июня 2020

Когда вы используете обычное пространство имен wdt: для свойств, вы получите только утверждения наивысшего ранга для каждого свойства. Викиданные в целом имеют три ранга :

  • Предпочтительный ранг
  • Нормальный ранг
  • Устаревший ранг

В в вашем случае "объектно-ориентированный язык" (Q899523) имеет предпочтительный ранг. Таким образом, все возвращаемые утверждения должны иметь одинаковый предпочтительный ранг. «язык программирования» (Q9143) имеет только нормальный ранг и, следовательно, не включен в это пространство имен. 1017 *

Попробуйте

На самом деле здесь используются пространства имен p: и ps:.

См. Также этот подраздел в Wikidata wiki на с использованием рангов в SPARQL .

...