【问题标题】:Is an empty property query possible in semantic media wiki?语义媒体维基中是否可以进行空属性查询?
【发布时间】:2015-09-17 17:14:00
【问题描述】:

这个问题是几年前提出的:

我自己的实验表明你可以查询例如

{{#ask: [[Person name::+]]
| ?Person name = name
| ?Person firstname = firstname
| limit=500
}}

并按名字排序以显示没有名字的条目。 如果按名字排序:

{{#ask: [[Person name::+]]
| ?Person name = name
| ?Person firstname = firstname
| sort=Person firstname
| limit=500
}}

非空名字将不再显示

{{#ask: [[Person name::+]][[Person firstname::!+]]
| ?Person name = name
| ?Person firstname = firstname
| limit=500
}}

不能作为非运算符!会建议

主动说“不”这是不可能的。

当前的 SMW 版本有什么用处?

看起来即使是非运算符也无法按预期工作:

{{#ask: [[Person name::+]] [[Person firstname::!Adolf]]
| ?Person name = name
| ?Person firstname = firstname
| limit=500
}}

将只显示名字不是 Adolf 的人,而不是有名字但没有名字的人条目。

【问题讨论】:

    标签: semantic-mediawiki


    【解决方案1】:

    据我所知,当前用于选择页面的工具范围不直接支持搜索空属性或缺失属性。

    我也不会屏住呼吸等待它的实施,因为执行这样的搜索可能需要一点性能。一个小例子来演示:

    场景:您的 wiki 有 3 个属性,Prop1、Prop2、Prop3。 wiki 中有 10 个页面。

    查询 1:您正在根据 Prop1 的现有值选择页面。喜欢[[Prop1::Josef]]。 SMW 在第 1 页上看到 Prop1 并停止评估第 1 页的其余部分(即 Prop2 和 Prop3)并转到第 2 页。因此,使用此查询时,仅评估 10 个属性,对 10 个页面中的每一个进行评估。

    查询 2:您正在根据 Prop3 的 absence 值选择页面。必须评估每个页面上的每个属性,以确定该页面是否匹配。如果评估 Prop1 以查看 Prop3 是否为空似乎不合逻辑,请记住,查询引擎首先需要确定属性是否为 Prop3,然后才能评估它找到的任何 Prop3 的值。因此,在查询空属性时,查询引擎必须评估每个页面上可能包含此类空属性的每个属性。

    这至少是我对无法检查空属性或缺失属性的原因的解释。从性能的角度来看,我可以看到它是如何引起大型网站的关注的。我想如果这个功能出现,它可能会在扩展中这样做,以允许人们通过安装这样的扩展来隐式地接受潜在的性能后果。

    同时,有一个相当合理的解决方法(我同样需要空或“未填写”的属性),那就是在缺少模板参数时使用模板来分配特殊属性。

    一个简单的例子,模板参数 Prop 应该成为属性 ExampleProp 的值:

    <noinclude>
    Use this template as:
    
    {{ExampleTemplate
    |Prop=
    }}
    </noinclude><includeonly>
    The value of ExampleProp is:
    {{#if: {{{Prop}}} | [[ExampleProp::{{{Prop}}}]] | [[ExampleProp::UNDEFINED]] }}
    <includeonly>
    

    通过这种方式,您可以查询属性 ExampleProp 的值 UNDEFINED 的存在,而不是它的空值。它不漂亮,但很有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 2018-03-05
      • 2019-09-19
      相关资源
      最近更新 更多