ProtégédataTime限制

时间:2018-01-15 19:31:02

标签: xsd owl protege protege4 manchester-syntax

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

我尝试过使用曼彻斯特语法:

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

但告诉我语法不正确。

P.S。我正在使用HermiT。

有人能帮助我吗?感谢。

编辑

具体例子。假设我们有一个Show类,它代表了电影放映的概念。每个节目都有日期和开始时间。因此,我们可以通过数据属性showDateTime和域Show以及范围xsd:dateTime(类似“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]

这就是我提问的原因。

1 个答案:

答案 0 :(得分:2)

使用曼彻斯特语法可以创建OWL本体。但是,OWL的语义不允许您尝试执行的操作。

编辑更新的问题

如上所述定义MorningShow类不起作用,因为:

(1)没有办法像你所描述的那样动态改变类的定义。

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

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

唯一的其他选择是:

(1)考虑使用Time Ontology in OWL,虽然这可能是一种过度杀伤。

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

我。 date,范围为xsd:dateTime

II。 hours,范围为xsd:byte

III。范围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