/ / Как да изразяваме числови интервали в свойството тип данни в онтологията? - свойства, бухал, протеже

Как да изразя числови интервали в свойството на типа данни в онтологията? - свойства, бухал, протеже

Това, което се опитвам да направя, е да създам тип даннисвойство, което приема и разпознава числови интервали. Например, нека кажем, че имам свойството "температура". В онтологията искам да създам 2 суб-свойства "горещи" и "студени". Горещи биха били температури 20-30 и студени 0-19. Това, което правя в момента е, че някои свойства са определени като по-ниски и горни. Но има ли по-удобен начин за изразяване на интервалите директно през имота? Така че, когато попитам например "23", тя ще разпознае "горещата". Някакви съвети?

Благодаря ви предварително

Отговори:

8 за отговор № 1

Това е доста лесно в OWL, но видовете изводи, които очаквате, може да са малко по-различни от тези, които сега ще обясня.

В OWL можете да дефинирате ограничения за свойствата на типа данни (като Показвах преди).

Въпреки това се изисква разсъждение за типа данни загатвам че някой ресурс / индивид с конкретна стойност на типа данни принадлежи към някакъв клас. Обърнете внимание, че не всички реализационни решения поддържат това, но аз ще се съсредоточа върху топче, което прави.

За да демонстрирам, аз ще създам малка 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 като "който и да е инстанция, която има a 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 като "който и да е инстанция, която има a 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.

Връзка към пълен пример онтология е тук, Опитайте да го заредите протеже и я класифицирайте с помощта на Плъгин за обосновка на пелети.

Имайте предвид, че се опитах да класифицирам тази онтология с отшелник и фактът ++ които в противен случай не успяха да направят изводи, хвърляйки изключения, посочвайки, че не поддържат такива аргументи на типа данни.