Использование Исключено в OWL

Уважаемые сотрудники Semantic Web!

Я спрашиваю себя, как я могу определить конструкцию "Исключено" в OWL. Пока единственное решение, которое я могу придумать, это использовать disjointWith. Что я имею в виду под "Исключено", показано в примере кода. Объект Дом - это пересечение крыши, стены, окон и пола. Так что, если один из этих классов пропустит, человек не станет Домом. Но логический вывод пойдет дальше с рассуждениями, потому что, возможно, недостающие классы для конкретного пересечения станут истинными. С другой стороны, класс Хауса имеет несвязанные отношения с классом цунами. Когда мой человек учится на занятиях по цунами, я точно знаю, что мой человек никогда не станет учеником Дома. Такое поведение я ожидаю, когда говорю о "Исключено". Но, может быть, у кого-то другое мнение по этому поводу?

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE rdf:RDF [
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>

<rdf:RDF    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
            xmlns="http://www.almfluss.com/rdf/0.1/Ontology.owl#" 
            xmlns:owl="http://www.w3.org/2002/07/owl#">

<owl:Class rdf:about="#House">
    <owl:intersectionOf rdf:parseType="Collection">
        <rdf:Description rdf:about="#Roof"/>
        <rdf:Description rdf:about="#Wall"/>
        <rdf:Description rdf:about="#Windows"/>
        <rdf:Description rdf:about="#Floor"/>
    </owl:intersectionOf>
    <owl:disjointWith rdf:resource="#Tsunami"/>
</owl:Class>

<owl:NamedIndividual rdf:about="#instance_House">
    <rdf:type rdf:resource="#Roof"/>
    <rdf:type rdf:resource="#Wall"/>
    <rdf:type rdf:resource="#Windows"/>
    <rdf:type rdf:resource="#Floor"/>
    <rdf:type rdf:resource="#Tsunami"/>
</owl:NamedIndividual>


<owl:Class rdf:about="#Roof"/>
<owl:Class rdf:about="#Wall"/>
<owl:Class rdf:about="#Windows"/>
<owl:Class rdf:about="#Floor"/>
<owl:Class rdf:about="#Tsunami"/>

</rdf:RDF>

С уважением, Мартейн ван дер Плаат

1 ответ

Решение

Если честно, я не совсем понимаю, что вы ищете. Тем не менее, я чувствую, что вы пытаетесь использовать OWL совершенно неправильно. Итак, вот несколько советов, как получить лучшую модель, которая, я надеюсь, поможет вам лучше понять, как эффективно использовать OWL.

Наиболее важной проблемой в вашем примере онтологии является то, что вы используете отношения класса с экземпляром таким образом, что это не имеет смысла. У вас есть человек, который имеет тип крыши, стены, окна и пол. Концептуально это просто бессмыслица: как могут быть все эти четыре вещи одновременно?

Отношения между домами и крышами / стенами / окнами не в том, что одно является другим (isA), а в том, что они являются частью друг друга. Поэтому вы не должны использовать такие вещи, как пересечения и аксиомы непересекаемости, чтобы попытаться смоделировать вашу онтологию, а вместо этого использовать отношения и ограничения свойств.

Например, чтобы смоделировать, что дом должен состоять как минимум из одной крыши, четырех стен и окна, вы можете сделать что-то вроде этого (используя синтаксис OWL Manchester):

Prefix: : <http://example.org/>

Class: Roof

Class: Window

Class: Wall

Class: House 
   SubClassOf: hasRoof min 1 and hasWall min 4 and hasWindow min 1

Class Tsunami
   DisjointWith: House

ObjectProperty: hasRoof
   Domain: House
   Range: Roof

ObjectProperty: hasWall
   Domain: House
   Range: Wall

ObjectProperty: hasWindow
   Domain: House
   Range: Window

Individual: myHouse
   Types: House 

Обратите внимание, как мы определяем класс домов как подкласс всех вещей, которые имеют как минимум четыре стены и одну крышу и как минимум одно окно. Обратите внимание, что мы используем отношение подкласса (а не отношение эквивалентного класса), потому что мы хотим сказать, что если что-то является домом, оно должно иметь эти вещи. Мы не хотим говорить обратное, потому что, в конце концов, существуют вещи, которые имеют четыре стены, крышу и окно, но которые не являются домами (например, сараи, сараи, магазины).

Что касается цунами: хотя верно, что класс домов и класс цунами не пересекаются, я не совсем уверен, что это особенно полезная вещь для моделирования. Более интересные отношения между цунами и домами, вероятно, заключаются в том, что одно представляет опасность для другого.

Также обратите внимание: это всего лишь пример возможного способа его моделирования. Вы можете сделать альтернативный выбор в моделировании (например, используя общий hasPart свойство вместо конкретного hasRoof/hasWall/hasWindow свойства для моделирования отношений между домами и крышами, стенами и окнами), которые одинаково хороши, в зависимости от ваших потребностей / вкусов.

Другие вопросы по тегам