【问题标题】:Protégé dataTime restrictionProtégé data时间限制
【发布时间】:2018-01-15 19:31:01
【问题描述】:

我有一个带有域 Show 和范围 xsd:dateTime 的数据属性 ShowTime。我想知道是否有办法断言 dataTime 范围必须包含在“2018-01-01TX:X:X”中,以便在该日期具有固定日期和可变小时。

我已经尝试过曼彻斯特语法:

xsd:dateTime[>="2018-01-01T00:00:00"^^xsd:dateTime, <"2018-01-01T00:00:00"^^xsd:dateTime]

但是告诉我语法不正确。

附:我正在使用 HermiT。

有人可以帮助我吗?谢谢。

已编辑

具体例子。假设我们有一个Show 类,它代表了电影放映的概念。每个节目都有日期和开始时间。因此,我们可以通过域Show 和范围xsd:dateTime 的数据属性showDateTime 简单地表示这些信息(类似于“2018-01-16T18:00:00”)。

问题是我需要仅根据开始时间对每天的时间段(早上、下午、傍晚、深夜)中的每个节目进行分类。我尝试了 SWRL,财产限制......我还没有找到一种方法来告诉推理者不要考虑日期,这显然优先于时间并且把我搞砸了。

所以,我想将日期和时间分成两个单独的属性(showDateshowTime),始终为 xsd:dateTime 类型,并限制 showTime 将其绑定为具有固定日期(例如. 2018-01-01).通过这种方式,我可以将 MorningShow 类定义如下:

 showTime some xsd:dateTime[>= "2018-01-01T07:00:00"^^xsd:dateTime ,
 <= "2018-01-01T13:00:00"^^xsd:dateTime]

这就是我提出问题的原因。

【问题讨论】:

    标签: xsd owl protege protege4 manchester-syntax


    【解决方案1】:

    曼彻斯特语法使您能够创建 OWL 本体。但是,OWL 的语义不允许您尝试做什么。

    编辑更新后的问题

    按照您的描述定义 MorningShow 类是行不通的,因为:

    (1) 无法按照您的描述动态更改类的定义。

    (2) 更重要的是,它违背了类的概念,该类给出了个人属于/不属于的集合的固定描述。您想到的可以归结为每个可能日期的不同 MorningShow 类。

    我在想在 Protege 中的 SWRL 中可能有一种方法可以应用一些只提取时间的函数。然而,事实并非如此。

    唯一的其他选项是:

    (1) 考虑使用Time Ontology in OWL,尽管这可能有点矫枉过正。

    (2) 定义您自己的DateTime 类,它是以下数据属性的域:

    我。 date 范围为xsd:dateTime

    二。 hours 范围为xsd:byte

    三。 minutes 范围为xsd:byte

    ObjectProperty: showTime
        Domain:Show
        Range: DateTime
    
    DataProperty: date
        Domain: DateTime
        Range: xsd:dateTime
    
    DataProperty: hours
        Domain: DateTime
        Range:  xsd:byte[>= "0"^^xsd:byte , < "24"^^xsd:byte]
    
    DataProperty: minutes
        Domain: DateTime
        Range: xsd:byte[>= "0"^^xsd:byte , < "60"^^xsd:byte]
    
    Class: Afternoon
        EquivalentTo: hours some xsd:byte[>= "12"^^xsd:byte , < "17"^^xsd:byte]
        SubClassOf: DateTime
    
    Class: DateTime
    Class: Morning
        EquivalentTo: hours some xsd:byte[< "12"^^xsd:byte]
        SubClassOf: DateTime
    
    Class: Show
        SubClassOf: showTime some ShowTime
    
    Class: ShowTime
        SubClassOf: showTime exactly 1 DateTime
    
    Individual: dt
        Facts: hours  "8"^^xsd:byte 
    

    【讨论】:

    • 非常感谢您的回答。如果我没有很好地解释,我很抱歉。我通过添加更多信息修改了问题。如果你能帮助我,你真的会帮助我。
    • @Cilla 您的编辑确实使您的问题更加清晰。谢谢。我会再次访问,希望能够在接下来的 24 小时内发布更新。
    • 再次感谢您!
    • 我可以在 OWL 中用日期时间做数学吗?
    • @amin 是的。您可以在我的博客here 上查看更多相关信息。
    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多