2013-03-07 2 views
4

Я хотел бы отображать в тех же свойствах запроса страницы, которая связана со страницами, на которые выполняется запрос.Semantic mediawiki #ask query: Отображение вложенных свойств по одному и тому же запросу

Предположим, что я хотел бы запросить все страницы в категории «Город», которые расположены в Германии, и я хочу отобразить название страницы, но также хочу отображать данные о поверхности Германии, например ,

Что-то вроде этого: {{#ask: [[Category:City]] [[location::Germany]] |?mainlabel |?Location.surface }}

Я знаю, что это не будет работать, но вы можете увидеть, что я хочу достичь.

ответ

3

Я не уверен, есть ли способ вложить запросы непосредственно в другие запросы. Обычный способ его использования - использовать шаблон. Таким образом, вы можете определить шаблон (или вложенную шаблона, если это происходит в шаблон) называется {{tablerow}}, который состоит из:

<includeonly> 
|- valign="top" 
| [[{{{1|}}}]] 
| {{#show: {{{1|}}} | ?surface }}</includeonly> 

В <includeonly> теги имеют важное значение по причинам, я не понимаю, это производит ошибки иногда если вы их оставите. Затем вы просто запускаете запрос #ask с format = template. (Вы можете создать заголовок в запросе, но я считаю, что проще просто поставить его снаружи.)

{| class="wikitable smwtable sortable" 
|- valign="bottom" 
! [[City]] 
! [[Surface]] 

{{#ask: [[Category:City]] [[location::Germany]] 
    | format = template 
    | template = tablerow 
    | link  = none 
}} 

|} 

Это будет пробивать каждый результат, возвращаемый запросом через шаблон как {{{1}}} и генерировать ряд на его основе , Если у вас есть другие данные для возврата из основного запроса, дополнительные свойства, которые вы запрашиваете, выйдут в виде последовательных неназванных параметров (поэтому, если вы включите | ?population, они войдут в шаблон как {{{2}}} и их необходимо будет добавить в структуру строк или он будет удален).

+0

Теги Includeonly определяют часть шаблона только для отображения страниц, ссылающихся на шаблон. В отличие от тегов noinlude, которые содержат контент, который будет отображаться только на странице шаблона, а не страницы, ссылающиеся на него. Все, что находится за пределами этих тегов, будет отображаться обоими. Пример использования: http://openei.org/wiki/Template:SampleTemplate –

+0

Ну, да, я знаю, что делают теги вообще. Я имел в виду, что в конкретном случае вспомогательных шаблонов для функций semantic mediawiki '{{#ask}}' я не знаю, зачем они нужны. Несмотря на то, что единственный текст в шаблоне - это раздел, который нужно перевести, иногда он не будет работать, если вы не обернете весь шаблон в теги ''. Я не сталкивался с какой-либо другой ситуацией, когда это так. –

Смежные вопросы