Получение данных меток объектов с помощью SPARQL в Викиданных

Я использую службу запросов викиданных для получения данных: https://query.wikidata.org/

Мне уже удалось использовать метку объекта двумя способами:

  1. Использование службы меток викибазы. Например:
SELECT ?spouse ?spouseLabel WHERE {
   wd:Q1744 wdt:P26 ?spouse.
   SERVICE wikibase:label {
     bd:serviceParam wikibase:language "en" .
   }
}
  1. Используя свойство rdfs:label:
SELECT ?spouse ?spouseLabel WHERE {
   wd:Q1744 wdt:P26 ?spouse.
   ?spouse rdfs:label ?spouseLabel. filter(lang(?spouseLabel) = "en").
}

Однако похоже, что для сложных запросов второй метод работает быстрее, в отличие от того, что указано в руководстве пользователя MediaWiki:

Служба очень полезна, когда вы хотите получить метки, поскольку она снижает сложность запросов SPARQL, которые в противном случае вам потребовались бы для достижения того же эффекта.

(https://www.mediawiki.org/wiki/Wikidata_query_service/User_Manual#Label_service/)

Что добавляет викибаза, чего я не могу добиться, используя только rdfs: label? Это кажется странным, поскольку они оба, по-видимому, достигают одной и той же цели, но метод rdfs: label кажется более быстрым (что логично, поскольку запрос не требует объединения данных из внешних источников).

Спасибо!


person Shlomi Uziel    schedule 01.09.2016    source источник
comment
Как получить значение для? SpouseLabel в первом примере, если оно не отображается в запросе?   -  person Joshua Taylor    schedule 01.09.2016
comment
@JoshuaTaylor Викиданные имеют это странное нестандартное расширение SPARQL, где они используют предложение SERVICE для предоставления меток для ресурсов.   -  person Jeen Broekstra    schedule 01.09.2016
comment
@jeen Я понял это из ответа, но похоже, что есть еще какая-то магия в знании того, как это будет называться. (Не то чтобы я смотрел документацию по нему)   -  person Joshua Taylor    schedule 02.09.2016
comment
Это не волшебство, в документе указывается вариант использования: WDQS автоматически генерирует метки следующим образом: Если несвязанная переменная в SELECT называется? NAMELabel, то WDQS создает метку (rdfs: label) для объекта в переменной? NAME.   -  person Shlomi Uziel    schedule 02.09.2016
comment
@ShlomiUziel Ну, по крайней мере, там хорошо задокументировано. Кажется ужасным, что вы получаете запрос о том, что кто-то, не знакомый с этой конкретной системой, но знакомый со SPARQL, (i) не понимает, почему он должен давать такие результаты; и (ii) имеет код, который выглядит так, как будто его следует удалить, потому что он не влияет на результаты, но на самом деле вносит свой вклад. Я не знаю, существуют ли инструменты линтинга SPARQL, но я бы ожидал, что один из них отметит это, поскольку не влияет на спроецированные привязки. Ура.   -  person Joshua Taylor    schedule 02.09.2016
comment
@JoshuaTaylor Я, конечно, согласен, но, к сожалению, я привязан к этой реализации, поскольку мне нужно запрашивать данные викиданных, которые в настоящее время не имеют ресурсов для управления экземпляром их базы данных самостоятельно.   -  person Shlomi Uziel    schedule 03.09.2016


Ответы (1)


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

Я предполагаю, что затем запрос будет расширен до другого представления, возможно, с пространством имен rdfs, как в вашем втором варианте, до фактического разрешения.

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

person atineoSE    schedule 01.09.2016
comment
Я склонен согласиться - я также подозревал, что термин «сложность» не относится к эффективности времени выполнения, как я изначально думал. Кроме того, официальная документация намекает, что запрос действительно расширяется или несколько оптимизируется или обрабатывается для получения желаемого результата (как я прокомментировал вопрос). Я согласен с тем, что для однозначного ответа требуется тщательный бенчмаркинг, хотя систематические прогоны определенных запросов дали мне довольно однозначные результаты - около 900 мс против 8000 мс с wikibase. Возможно, эта общедоступная конечная точка выполняет некоторые оптимизации или изменения, о которых мы не знаем ... - person Shlomi Uziel; 02.09.2016