Объединить результаты подзапроса #ask в semantic-mediawiki - PullRequest
0 голосов
/ 10 октября 2019

У меня есть коллекция научных работ, хранящихся в семантическом медиа-вики. На странице всегда есть название статьи. Каждая статья имеет уникальный идентификатор в виде свойства citekey [[Has citekey::someauthor2019]].

Теперь я хочу связать его с другими публикациями и автоматически показать таблицу всех ссылочных статей. Для этого я сохраняю несколько свойств на странице со ссылочными свойствами [[Has reference::authorX2017]], [[Has reference::authorY2018]] и т. Д.

. Для этого я хочу получить все ссылки с помощью запроса #ask и использовать эти результаты вновый запрос #ask, чтобы получить все результаты, которые имеют любую из ссылок как их свойство citekey.

Чтобы получить ссылки, я использую комбинацию этого запроса #ask:

{{#ask: [[Has citekey::someauthor2019]]
 |?Has reference
 |format=template
 |template=Query Result
}}

с этим Результатом запроса Формат шаблона:

{{{2}}}

Например, это может привести к выводу: authorX2017, authorY2018

Как я могу использовать это автоматически вновый запрос #ask для получения списка страниц, которые имеют какие-либо из этих ссылок в качестве свойства citekey?

Спасибо за любые советы!

1 Ответ

0 голосов
/ 11 октября 2019

Как я могу использовать это в новом #ask-запросе, чтобы получить список страниц, которые имеют любую из этих ссылок в качестве свойства citekey?

Вы должны просто использовать результатПараметр как новый параметр внутреннего запроса Ask внутри вашего шаблона. Есть какие-то проблемы?

Попробуйте использовать

 |link=none

(см. Источник 1)

, это пройдет {{{1}}} и {{{2}}} результаты в виде необработанного текста для вашего шаблона

Ваш запрос становится:

{{#ask: [[Has citekey::someauthor2019]]
 |?Has reference
 |format=template
 |template=Query Result
 |link=none
}}

Затем вы можете использовать {{{1}}} и {{{2}}} в качестве параметров дляновый запрос.

Но вы сказали, что у вас может быть несколько результатов для параметра результата {{{Имеет ссылку}}}. Поэтому вы должны использовать что-то вроде arraymaptemplate (см. Источник 2).

{{#arraymaptemplate:value|template|delimiter|new_delimiter}}

, где 'template' будет использовать каждое значение списка {{{2}}} в своем собственном запросе.

Источники:

  1. https://www.semantic -mediawiki.org / wiki / Help: Inline_queries # Standard_parameters_for_inline_queries

  2. https://www.mediawiki.org/wiki/Extension:Page_Forms/Page_Forms_and_templates#arraymaptemplate

...