Протеже 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