/ / Jak wyrazić przedziały liczbowe we właściwościach typów danych w ontologii? - właściwości, sowa, protegowany

Jak wyrażać interwały numeryczne we właściwościach typu danych w ontologii? - właściwości, sowa, protegowany

To, co próbuję zrobić, to utworzyć typ danychwłaściwość, która akceptuje i rozpoznaje przedziały liczbowe. Powiedzmy na przykład, że mam właściwość „temperatura”. W ontologii chcę utworzyć 2 właściwości podrzędne „gorący” i „zimny”. Gorące byłyby temperatury 20-30, a zimne 0-19. Obecnie zajmuję się ustawieniem niektórych właściwości jako dolne i górne. Ale czy jest wygodniejszy sposób wyrażania interwałów bezpośrednio w nieruchomości? Aby zapytać na przykład „23” rozpoznał „gorący”. Jakieś wskazówki?

Z góry dziękuję

Odpowiedzi:

8 dla odpowiedzi № 1

W OWL jest to dość proste, jednak oczekiwane przez ciebie wnioski mogą się nieco różnić od tych, które teraz wyjaśnię.

W OWL możesz zdefiniować ograniczenia właściwości typu danych (as Pokazałem wcześniej).

Konieczne jest jednak uzasadnienie typu danych wywnioskować że jakiś zasób / osoba z konkretna wartość typu danych należy do jakiejś klasy. Zauważ, że nie wszystkie implementacje logiczne obsługują to, jednak skupię się na Śrut, który robi.

Aby to zademonstrować, utworzę małą ontologię OWL. Wypiszę ją w składni OWL / XML. To będzie długie, ale mam nadzieję, że wyjaśni, jak to się robi.

Najpierw zdefiniuj „reified„klasa o nazwie Temp:

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

Następnie wywołano dwie podklasy Hot i 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>

Teraz możemy zdefiniować naszą właściwość typu danych o nazwie tempDegC:

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

Stworzę też kilka osób, które korzystają z tej właściwości, w następujący sposób:

<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>

Zauważ, że nie zapewniłem, która klasa x lub y należeć do, tylko że mają tempDegC pewnych xsd:double wartości.

Gdybyśmy poprosili rozumującego o sklasyfikowanie ontologii w tym momencie, nie zobaczylibyśmy żadnych nowych wniosków.

Chcemy, aby rozumujący automatycznie to wywnioskował x należy do klasy Cold, i to y należy do klasy Hot.

Możemy to osiągnąć poprzez ograniczenie definicja z klas Cold i Hot pod względem właściwości typu danych tempDegC, jak następuje:

<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>

Tutaj ten aksjomat definiuje Cold tak jak "każdy instancja, która ma tempDegC z a xsd:double wartość, która jest <= 19".

Podobnie możemy ograniczyć Hot następująco:

<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>

Tutaj ten aksjomat definiuje Hot tak jak "każdy instancja, która ma tempDegC z a xsd:double wartość, która jest > 19 i <= 30".

Teraz, dzięki tym definicjom, prośba uzasadnienia o klasyfikację ontologii zawiera dwa nowe stwierdzenia:

x : Cold

y : Hot

Wyjaśnienie

Kluczem do uzyskania tych wniosków było użycie EquivalentClasses zdefiniować ograniczenie na Cold i Hot zajęcia Używając EquivalentClasses zamiast SubClassOfmówimy to byle co z a tempdegC w podanych zakresach należy do klasy.

Gdybyśmy jednak mieli użyć SubClassOf w definiowaniu ograniczenia Cold i Hot klas powyżej, ograniczyłoby to tylko wystąpienia Cold i Hot przestrzegać przymusu, tzw niezbędny pod warunkiem, że we wszystkich przypadkach konieczne jest przestrzeganie ograniczenia.

W przeciwieństwie, EquivalentClasses definiuje oba niezbędny i tzw wystarczający warunki: nie tylko wszystkie instancje muszą (koniecznie) przestrzegać ograniczenia, ale tak jest wystarczający że jeśli każdy indywidualne (np x lub y) spełniają ograniczenia, że ​​są również członkami. To jest to wystarczający warunek, na podstawie którego rozumujący wywnioskuje x : Cold i y : Hot.

Link do strony pełna przykładowa ontologia jest tutaj. Spróbuj załadować go do Protegowany i sklasyfikuj go za pomocą Wtyczka rozumowania pelletu.

Zauważ, że próbowałem sklasyfikować tę ontologię za pomocą Pustelnik i FaCT ++ które w innym przypadku nie dostarczyły wniosków, rzucając wyjątki, wskazując, że nie obsługują takiego rozumowania typu danych.