首页 > 解决方案 > 访问语义媒体维基中同一子对象中的其他属性

问题描述

我在语义媒体维基中使用子属性来存储不同类型的信息,例如日志。这看起来像这样:

{{#subobject:
 |Has date = 2020-06-18
 |Has log = Diary
 |Has tag = Stackoverflow
 |Has agenda = 
* Done Something
}}

我想做的是在访问日期参数的议程部分中使用#ask 查询,如下所示:

{{#subobject:
 |Has date = 2020-06-18
 |Has log = Diary
 |Has tag = Stackoverflow
 |Has agenda = 
* The date today is:

{{#ask:
[[Has log::Diary]]
[[Has date::<<Is there a way to access the date of this subobject?>>]]
|?Has date = Date
}}

}}

我知道这是不可能的,因为必须先将文本存储在数据库中以便以后检索它,但我不介意是否必须保存两次或需要其他解决方法。

谢谢!

标签: mediawikimediawiki-extensionssemantic-mediawiki

解决方案


显而易见的解决方案是将此代码包装在模板中,例如Template:Appointment

<includeonly>{{#subobject:
 |Has date = {{{date|}}}
 |Has log = {{{log|}}}
 |Has tag = {{{tag|}}}
 |Has agenda = {{{agenda|}}}
}}

Also on {{{date|}}} in {{{log|}}}:
{{#ask:
[[Has log::{{{log|}}}]]
[[Has date::{{date|}}}]]
|?Has date = Date
|format = ul
}}
</includeonly>

调用模板就像

{{Appointment
| date   = 2020-06-18
| log    = Diary
| tag    = Stackoverflow
| agenda = <nowiki>
* The date today is:
}}

每当您想将记录添加到日志时。


推荐阅读