假设我想在“知识图”中链接几个 wiki 页面。比方说,这里有一个地理对象的快速列表,从大到小,其中箭头表示直接的 MediaWiki 链接:
Continent:Europe
^__Country:Netherlands
^__City:Amsterdam
^__Venue:Heineken Music Hall
上面的页面有以下内容:
大陆:欧洲
{{#set: | self:name = Europe }}
[[Category:Continents]]
国家:荷兰
{{#set: | ref:continent = Continent:Europe | self:name = Netherlands }}
[[Category:Countries]]
城市:阿姆斯特丹
{{#set: | ref:country = Country:Netherlands | self:name = Amsterdam }}
[[Category:Cities]]
地点:喜力音乐厅
{{#set: | ref:city = City:Amsterdam | self:name = Heineken Music Hall }}
[[Category:Venues]]
使用以下类型声明属性:
self:name
:[[has type::text]]
ref:continent
,ref:country
,ref:city
:[[has type::page]]
据我了解 Semantic MediaWiki 的工作原理,该#ask
功能适用于一个级别。比方说,{{#ask: [[self:name::+]] }}
可以获取所有 4 个页面,因为所有页面都self:name
设置了属性。我还可以通过过滤掉某个类别来缩小搜索结果的范围:{{#ask: [[Category:Venues]] [[ref:city::City:Amsterdam]] }}
. 这允许立即获得相关页面(这很容易,因为页面直接Venue:Heineken Music Hall
与页面相关City:Amsterdam
)。
现在,假设我想显示位于 的所有场地,Continent:Europe
因此应该以某种方式隐含地考虑。无法工作,因为查询组合了两个在同一页面上永远不会一起出现的属性。那么,Semantic MediaWiki 是否有任何查询语法/能力允许指定中间关系,以便它可以“抓取”和“内部连接”给欧洲的所有场所?Country:Netherlands
City:Amsterdam
{{#ask: [[Category:Venues]] [[ref:continent::Continent:Europe]] }}
是否可以跨多个页面查询以某种方式指定中间关系?还是 SMW 仅针对“扁平”/标记关系设计?
更新
我对我想要得到的东西不是很具体。假设您必须描述一个可以转换为人类可读形式的事件。目前,在非结构化 wiki 中,您可能会使用类似于以下的自定义模板:
{{Event
| date = 2012-12-03
| country = Netherlands
| city = Amsterdam
| venue = Heineken Music Hall
}}
产生以下结果:
2012年12月3日的演出在荷兰阿姆斯特丹的喜力音乐厅举行。
我正在寻找的是允许在 Semantic MediaWiki 中编写以下模板的东西:
{{Event
| date = 2012-12-03
| ref:venue = Venue:Heineken Music Hall
}}
因此,可以自动获得国家和城市,并以某种方式在上面定义的关系,但仍然给出结果:...,Netherlands 上的表现。