mediawiki中的连接词&x27;s{{{如果:…}

mediawiki中的连接词&x27;s{{{如果:…},mediawiki,mediawiki-templates,semantic-mediawiki,Mediawiki,Mediawiki Templates,Semantic Mediawiki,我正在mediawiki中创建一个模板,该模板可以选择性地包含一条信息,前提是该信息可用。该信息是使用文章中作为模板参数传递的语义mediawiki注释获得的。问题在于,将多个查询与and和ORs组合在一个{{{if:…}}中非常麻烦且容易出错。我现在做这件事的方式看起来像 {{#ifexist: {{{1}}} | {{#if: {{#if: {{#show: {{{1}}} | ?prop1 }} | {{#if: {{#show: {{{1}}} | ?prop2 }} | {{#sh

我正在mediawiki中创建一个模板,该模板可以选择性地包含一条信息,前提是该信息可用。该信息是使用文章中作为模板参数传递的语义mediawiki注释获得的。问题在于,将多个查询与and和ORs组合在一个
{{{if:…}}
中非常麻烦且容易出错。我现在做这件事的方式看起来像

{{#ifexist: {{{1}}} | {{#if: {{#if: {{#show: {{{1}}} | ?prop1 }} |
  {{#if: {{#show: {{{1}}} | ?prop2 }} | {{#show {{{1}}} | ?prop3 }} }}
  {{#if: ... }} ... | ... }}
因此,第二个和第三个
#if
s基本上是编码一个,而第二个和第四个是编码一个或,也就是说,它类似于
if({{1}中的prop1)和({1}中的prop2)和({{1}中的prop3))或…
#ifexist
是必需的,因为当
{{{{1}}}
在wiki中不作为文章存在时,
#show
返回一个错误(不是空字符串)。我有大约6个ORs和18个and,所以你可以想象阅读它会变得多么漫长和困难。我想知道是否有一种更直接的方式来表达这些连接词,特别是需要使用嵌套的
#if
s进行这种丑陋的编码


如果您想知道我在哪里需要这么长的If,我正在使用的实际模板如下:

MediaWiki模板不是一种编程语言;如果这对你来说是个问题,那么你可能做错了。试试看

如果压力过大,我会使用:

如果您需要根据条件在多个输出之间进行选择,旧的
开关(true)
技巧也很方便:

{{#switch:1
| {{#show: {{{1}}} | ?prop1 | 1 | 0 }} = option 1
| {{#show: {{{1}}} | ?prop2 | 1 | 0 }} = option 2
...
}}

听起来你有点像SMW和MW。也许有更好的方法来组织语义数据,以便于查询?否则,嵌套if是在MW解析器函数中生成
的唯一方法,感谢您的回复。对于如何更好地组织语义数据,您有什么具体的建议吗?根据语义数据是否可用,文章中包含部分的通常方式是什么?我同意这有点延伸SMW,但根据我的经验,大多数非平凡的实现最终都会这样做。更具体地说,拉伸会导致仅写SMW标记。:)我发现有一件事很有帮助,那就是通过在模板中设置计算属性来分离一些逻辑,使之模块化。使用Scribunto/Lua的问题是(缺乏)对语义注释的访问。
{{#switch:1
| {{#show: {{{1}}} | ?prop1 | 1 | 0 }} = option 1
| {{#show: {{{1}}} | ?prop2 | 1 | 0 }} = option 2
...
}}