Есть ли что-то вроде rowid или обходного пути для этого в Semantic MediaWiki?
http://semantic-mediawiki.org/wiki/Help:Inline_queries
объясняет, как делать запросы в Semantic MediaWiki
{{#ask:
[[Category:City]] [[Population::+]]
|?Population
|format=table
}}
пример для такого запроса.
Теперь было бы неплохо иметь столбец, который показывает текущий индекс / rowid, как показано здесь.
Как это можно сделать?
1 ответ
Я посмотрел на ваш макет желаемого ответа. Точнее, чем rowid, числа в вашем первом столбце на самом деле представляют собой алфавитный возрастающий ранг названия города, так как строки сохраняют свои номера, даже если в таблице используется другой столбец. Исходя из этого предположения, да, есть хакерский способ сделать это.
Хакерское решение является хакерским по многим причинам, одна из них заключается в том, что предполагается, что страницы, которые вы хотите, чтобы запрос возвращал, используют шаблон. В этом шаблоне вы хотите установить 2 свойства.
Первое свойство что-то вроде
[[CityName::{{FULLPAGENAME}}]]
Причина, по которой мы хотим, это поместить заголовок страницы в свойство, с которым SMW может поиграть. Почему сейчас станет понятно.
Второе свойство будет выглядеть примерно так:
[[CityAlphaRank::{{#ask: [[CityName::<{{FULLPAGENAME}}]] | format=count}}]]
Эта строка подсчитывает, сколько заголовков страниц в алфавитном порядке перед текущей (включая текущую), и выводит число. Ака алфавитный рейтинг.
Вам остается только изменить запрос, чтобы он использовал эти два новых свойства. будет выглядеть примерно так:
{{#ask:
[[Category:City]] [[Population::<300000]]
|mainlabel=-
| ?CityAlphaRank
| ?CityName
| ?Population
| format=table
}}
Обратите внимание, это кажется мне уродливым и хакерским, и, разрабатывая это решение, мне удалось вытащить из моей тестовой системы довольно много белых страниц с сообщениями о смерти. Поэтому это решение, скорее всего, будет крайне нежелательным, но оно работает.:)