在我的语义丑闻诗人维基中,我希望能够查询所有具有特定值的属性的页面,理想情况下按属性分组。例如,给定值"拜伦勋爵",我希望收到这样的列表:
儿子:凯瑟琳·戈登,约翰"疯狂杰克"拜伦
传闻情人:卡罗琳·兰姆夫人、简·伊丽莎白·斯科特"牛津夫人"、奥古斯塔·丽、安妮·伊莎贝拉·米尔班克、尼科洛·吉罗、奥古斯塔 利、特蕾莎·马克里·
父亲:Ada Lovelace,Clara Allegra Byron。
传闻父亲:伊丽莎白·梅多拉·利
。等等。我相信此功能在这里得到了演示:http://semantic-mediawiki.org/wiki/Special:Browse/California 标题"隐藏链接到此处的属性"下。它也类似于 http://semantic-mediawiki.org/w/index.php?title=Template:Invert-property - 但此模板一次只会返回一个已知属性名称的值。
根据 http://semantic-mediawiki.org/wiki/Germany MediaWiki内部不支持反向关系,尽管Special:Browse页面似乎在管理;是否有任何扩展或其他技术可以做到这一点?
查询中的属性前面放置"-"即可查询属性的反转。例如:
{{#ask: [[Category:Poet]]
| ?-hasSon=son of
}}
见 http://semantic-mediawiki.org/wiki/Help:Inverse_properties
这就是我处理指向特定页面的链接集合的方式。我在这里必须处理的问题是,可以在当前页面和其他页面上建立关系。您可能会发现这很有用。此外,您可能希望将"具有超级节点"替换为"sun of",将"具有子节点"替换为"父亲"。我还使用mediawiki的数组扩展来合并重复值。
== Links ==
=== Super-Nodes ===
{{#arraydefine:key_1
|{{#ask:[[{{PAGENAME}}]]
|?has supernode
|mainlabel=-
|headers=hide
|format=array
|}}
}}
{{#arraydefine:key_2
|{{#ask:[[has subnode::{{PAGENAME}}]]
|format=array
|}}
}}
{{#arrayunion:key_mrg |key_1 |key_2 }}
{{#arraysort:key_mrg|nat}}
{{#arrayprint:key_mrg}}
=== Sub-Nodes ===
{{#arraydefine:key_1
|{{#ask:[[{{PAGENAME}}]]
|?has subnode
|mainlabel=-
|headers=hide
|format=array
|}}
}}
{{#arraydefine:key_2
|{{#ask:[[has supernode::{{PAGENAME}}]]
|format=array
|}}
}}
{{#arrayunion:key_mrg |key_1 |key_2 }}
{{#arraysort:key_mrg|nat}}
{{#arrayprint:key_mrg}}