Протеже dataTime ограничение

У меня есть свойство Data ShowTime с доменом Show и диапазоном xsd:dateTime, Я хотел бы знать, есть ли способ утверждать, что диапазон dataTime должен быть включен в "2018-01-01TX:X:X", чтобы иметь фиксированную дату и переменный час для этой даты.

Я пробовал с манчестерским синтаксисом:

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

Но сказал мне, что синтаксис не правильный.

PS Я использую HermiT.

Кто-нибудь может мне помочь? Благодарю.

отредактированный

Конкретный пример. Предположим, у нас есть Show класс, который представляет концепцию кинопоказа. Каждое шоу имеет дату и время начала. Таким образом, мы можем тривиально представить эту информацию через свойство данных showDateTime с доменом Show и диапазон xsd:dateTime (что-то вроде "2018-01-16T18:00:00").

Проблема в том, что мне нужно классифицировать каждое шоу в ежедневном временном интервале (утром, днем, ранним вечером, поздней ночью) только по времени начала. Я попытался с SWRL, ограничением свойств... Я не нашел способ сказать разумному не рассматривать дату, которая очевидно имеет приоритет над временем и портит меня.

Итак, я подумал о разделении даты и времени на два отдельных свойства (showDate а также showTime), всегда имеет тип 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 ответ

Манчестерский синтаксис позволяет создавать онтологии OWL. Однако семантика OWL не позволяет вам делать то, что вы пытаетесь сделать.

РЕДАКТИРОВАТЬ для своего обновленного вопроса

Определение MorningShow Класс, как вы описали, не будет работать, потому что:

(1) Нет способа динамически изменить определение класса, как вы описали.

(2) Что еще более важно, это идет вразрез с понятием класса, который дает фиксированное описание набора, к которому люди принадлежат / не принадлежат. То, что вы имеете в виду, сводится к другому MorningShow класс на каждую возможную дату.

Я думал, что в SWRL в Protege может быть способ применить некоторую функцию, которая будет извлекать только время. Однако, это не так.

Единственные другие варианты:

(1) Подумайте об использовании временной онтологии в 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 
Другие вопросы по тегам