Есть ли способ напрямую восстановить субъект и параметры предиката из узла оператора Wikidata? - PullRequest
0 голосов
/ 29 января 2019

Я хотел бы найти прямой способ получения тройки (то есть субъекта, основного предиката и объекта), который неявно присутствует в узле оператора в Викиданных.

Например, в службе запросов Wikidata можно запросить

SELECT ?subject ?statement ?object
WHERE 
{
 wd:Q2629845 p:P54 ?statement.
 ?statement ps:P54 wd:Q631.}
}

, то есть получить мне значение для ?statement, представляющее узел оператора Massimo Marazzina (wd:Q2629845) играет за «Интер Милан» (wd:Q631).В этом примере привязка, получаемая для ?statement, равна wds:q2629845-C6C57DFC-1340-4373-8B24-FB718AA8A949.

Субъект, основной предикат и объект, неявный в этом операторе (т. Е. Тройной <<code>wd:Q2629845 wdt:P54 wd:Q631>), можно восстановить изсам узел выписки.Восстановление параметров, закодированных в узле оператора , кажется очень подходящей вещью, для которой существует сервис wikibase, поэтому я предполагаю, что есть некоторый предикат, который можно использовать для прямого запроса дляэти параметры.

Можно восстановить тройку <<code>wd:Q2629845 wdt:P54 wd:Q631>, которая закодирована в узле оператора, выполнив запрос

SELECT ?subject ?directPredicate ?object
WHERE 
{
 ?subject ?predicate wds:q2629845-C6C57DFC-1340-4373-8B24-FB718AA8A949.
 ?predicate (^wikibase:claim)/wikibase:directClaim ?directPredicate.
 ?predicate (^wikibase:claim)/wikibase:statementProperty ?statementProperty.
 wds:q2629845-C6C57DFC-1340-4373-8B24-FB718AA8A949 ?statementProperty ?object.
}

Это, однако, довольно окольным путем и включает в себя запросы с открытымпеременная в позиции предиката (которую я хотел бы избежать).

В идеале, решением должно быть что-то вроде предиката викибазы (назовите его "wikibase:mainPredicate"), которое, учитывая узел оператора STATEMENT, позволит запросить

SELECT ?mainPredicate
WHERE
{
  STATEMENT wikibase:mainPredicate ?mainPredicate.
}

, где ?mainPredicate возвращает нам основной предикат, используемый в самом узле оператора.

Спасибо!

...