【问题标题】:Searchable date/time durations in SMWSMW 中可搜索的日期/时间持续时间
【发布时间】:2015-01-12 05:19:38
【问题描述】:

我在私人环境中使用带有 SMW 扩展程序的 Mediawiki 来组织我的小组正在创建的虚构世界。我有一些我想要的功能,我想知道是否有扩展,或者是否有可能制作我自己的,这会让我做我想做的事情。

基本上,用简单的英语...我想知道宇宙在特定时间点(或持续时间)发生了什么。

我想让用户能够给出日期(简单到一年,或者根据需要精确)或持续时间,并返回每个持续时间重叠的事件。

例如。

  • 事件 1 开始于约公元前 3200 年,结束于约公元前 198 年
  • 事件 2 开始于公元前 509 年,结束于公元 405 年
  • 事件 3 开始于公元 419 年 1 月 15 日,结束于公元 419 年 1 月 17 日
  • 事件 4 开始于公元前 409 年左右,结束于公元 2021 年 2 月 14 日

用户输入公元前 309 年的日期(在本例中为部分日期)。 Wiki 返回事件 1 和事件 4,因为给定的日期在两者的持续时间内。

这将允许我的创作者查询特定日期(希望是持续时间)并发现已经发生的事件,因此他们可以根据已经建立的内容调整他们的作品。这是一个简单的冲突检查器。

如果没有可用的扩展程序可以处理这个问题,我可以研究的任何地方都有这样的东西吗?我从未在 PHP 中处理过日期。我是一名普通的业务编码员,我从未做过复杂的应用程序。

【问题讨论】:

    标签: php date mediawiki semantic-mediawiki


    【解决方案1】:

    SMW 中没有内置的“持续时间”数据类型,因此最简单的方法可能是使用一个 date property 作为开始日期,一个作为结束日期(注意它必须是 BC/ AD,不是BCE/CE 或类似的):

    [[Event starts at::3200 BC]]
    [[Event ends at::198 BC]]
    

    然后您可以查询每个事件的开始日期早于某个日期,结束日期晚于某个日期:

    {{#ask:[[Event starts at::<1000 BC]] [[Event ends at::>1000 BC]]}}
    

    请注意,&gt; 在 SMW 查询语法中实际上表示“大于或等于”。

    【讨论】:

    • 这适用于公元前和公元,或混合日期。例如,SMW 能否比较公元前 1000 年和公元 1989 年 1 月 1 日?
    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 2012-01-09
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2018-05-06
    相关资源
    最近更新 更多