/ / Як виразити числові інтервали у властивості типу даних в онтології? - властивості, сова, ставленик

Як виразити числові інтервали у властивості типу даних в онтології? - властивості, сова, протеже

Я намагаюся створити тип данихвластивість, що приймає та розпізнає числові інтервали. Наприклад, скажімо, у мене є властивість "температура". В онтології я хочу створити 2 підвластивості "гарячий" і "холодний". Гарячою буде температура 20-30, а холодною 0-19. На даний момент я роблю те, що деякі властивості встановлюються як нижня і верхня. Але чи є більш зручний спосіб виразити інтервали безпосередньо через власність? Так що коли я запитую, наприклад, "23", він розпізнає його "гарячий". Будь-які поради?

Заздалегідь спасибі

Відповіді:

8 для відповіді № 1

Це досить просто у OWL, однак висновки, яких ви очікуєте, можуть дещо відрізнятися від тих, які я зараз поясню.

У OWL ви можете визначити обмеження щодо властивостей типу даних (як Я вже показував раніше)

Однак для обґрунтування типу даних потрібно infer що якийсь ресурс / особа з конкретне значення типу даних належить до якогось класу. Зауважте, що не всі реалізатори реагентів підтримують це, однак я зупинюсь на цьому Пеллет, що робить.

Для демонстрації я створив невелику онтологію OWL. Випишу її в синтаксисі OWL / XML. Це буде довго, але, сподіваємось, пояснить, як це робиться.

По-перше, визначте "реіфікований"клас називається Temp:

<Declaration>
<Class IRI="#Temp"/>
</Declaration>

Далі дзвонили два підкласи Hot і Cold:

<Declaration>
<Class IRI="#Hot"/>
</Declaration>

<SubClassOf>
<Class IRI="#Hot"/>
<Class IRI="#Temp"/>
</SubClassOf>

<Declaration>
<Class IRI="#Cold"/>
</Declaration>

<SubClassOf>
<Class IRI="#Cold"/>
<Class IRI="#Temp"/>
</SubClassOf>

Тепер ми можемо визначити властивість нашого типу даних, що називається tempDegC:

<Declaration>
<DataProperty IRI="#tempDegC"/>
</Declaration>

Я також створити пару осіб, які користуються цією властивістю, наступним чином:

<Declaration>
<NamedIndividual IRI="#x"/>
</Declaration>

<DataPropertyAssertion>
<DataProperty IRI="#tempDegC"/>
<NamedIndividual IRI="#x"/>
<Literal datatypeIRI="&xsd;double">13.5</Literal>
</DataPropertyAssertion>

<Declaration>
<NamedIndividual IRI="#y"/>
</Declaration>

<DataPropertyAssertion>
<DataProperty IRI="#tempDegC"/>
<NamedIndividual IRI="#y"/>
<Literal datatypeIRI="&xsd;double">23.4</Literal>
</DataPropertyAssertion>

Зверніть увагу, що я не стверджував, який клас x або y належати, просто, що вони мають tempDegC певних xsd:double цінності

Якби ми попросили розпізнавача класифікувати онтологію в цей момент, ми б не побачили жодних нових висновків.

Ми хочемо, щоб розумник автоматично зробив це x належить до класу Cold, і це y належить до класу Hot.

Ми можемо досягти цього, обмеживши визначення класів Cold і Hot з точки зору властивості типу даних tempDegC, наступним чином:

<EquivalentClasses>
<Class IRI="#Cold"/>
<DataSomeValuesFrom>
<DataProperty IRI="#tempDegC"/>
<DatatypeRestriction>
<Datatype abbreviatedIRI="xsd:double"/>
<FacetRestriction facet="&xsd;maxInclusive">
<Literal datatypeIRI="&xsd;double">19.0</Literal>
</FacetRestriction>
</DatatypeRestriction>
</DataSomeValuesFrom>
</EquivalentClasses>

Тут ця аксіома визначає Cold як "будь-який екземпляр, який має tempDegC з xsd:double значення, яке є <= 19".

Так само ми можемо обмежити Hot наступним чином:

<EquivalentClasses>
<Class IRI="#Hot"/>
<DataSomeValuesFrom>
<DataProperty IRI="#tempDegC"/>
<DatatypeRestriction>
<Datatype abbreviatedIRI="xsd:double"/>
<FacetRestriction facet="&xsd;maxInclusive">
<Literal datatypeIRI="&xsd;double">30.0</Literal>
</FacetRestriction>
<FacetRestriction facet="&xsd;minExclusive">
<Literal datatypeIRI="&xsd;double">19.0</Literal>
</FacetRestriction>
</DatatypeRestriction>
</DataSomeValuesFrom>
</EquivalentClasses>

Тут ця аксіома визначає Hot як "будь-який екземпляр, який має tempDegC з xsd:double значення, яке є > 19 і <= 30".

Тепер, з цими визначеннями, запитання розумника про класифікацію онтології дає два нових твердження:

x : Cold

y : Hot

Пояснення

Ключем до отримання цих висновків було використання EquivalentClasses визначити обмеження на Cold і Hot класи. За допомогою EquivalentClasses замість SubClassOf, ми це говоримо нічого з tempdegC в межах зазначених діапазонів належить до класу.

Однак, якщо б ми замість цього використали SubClassOf у визначенні обмеження на Cold і Hot класи вище, це обмежило б лише екземпляри Cold і Hot дотримуватися обмеження, т. зв необхідний умови, згідно з якою необхідно, щоб усі випадки дотримувались обмеження.

У контрасті, EquivalentClasses визначає обидва необхідний і т. зв достатній умови: не тільки всі випадки (обов’язково) повинні дотримуватися обмеження, але воно є достатній що якщо будь-який фізична особа (наприклад x або y) відповідають обмеженням, що вони також є членами. Саме це достатній умова, за якою розумник робить висновок про це x : Cold і y : Hot.

Посилання на повний приклад онтології тут. Спробуйте завантажити його в Протеж і класифікуйте його за допомогою Плагін для відновлення гранул.

Зверніть увагу, що я намагався класифікувати цю онтологію за HermiT і Факт ++ які в іншому випадку не змогли створити умовиводи, викинувши винятки, вказуючи, що вони не підтримують подібні міркування щодо типу даних.