Можно ли удалить owl:class и owl:restriction из определений классов ограничений?

Эти утверждения одинаковы? Есть ли опасения, если я удалю owl:Restriction и owl:Class. они кажутся излишними, но именно так я всегда вижу примеры в Интернете. owl:onProperty имеет домен owl:restriction, а owl:restriction является подклассом owl:class.

:myClass owl:equivalentClass  
[a owl:Class ;
          owl:intersectionOf (
          [ a owl:Restriction ; owl:onProperty :hasProp  ; owl:allValuesFrom  :SomeOtherClass ]
          [ a owl:Restriction ; owl:onProperty :hasChild ; owl:someValuesFrom :SomeOtherClass ] ) ] .



:myClass owl:equivalentClass  
[owl:intersectionOf  (
  [ owl:onProperty :hasProp ; owl:allValuesFrom  :SomeOtherClass ]
  [ owl:onProperty :hasProp ; owl:someValuesFrom :SomeOtherClass ] )
] .

person Mike    schedule 22.02.2014    source источник


Ответы (1)


Хороший вопрос. Причина, по которой вам нужно указать эти типы, связана с отображением графов RDF в онтологии OWL (2). В онтологии OWL 2 все сущности должны быть явно типизированы как класс, свойство объекта, свойство типа данных, свойство аннотации, тип данных или онтология. Чтобы убедиться, что это ограничение учтено во всех RDF-сериализациях онтологии OWL, необходимо явно ввести все ресурсы, введенные онтологией, включая эти пустые узлы, связанные с ограничениями, пересечениями и т. д.

При этом во многих случаях явная типизация не очень полезна, потому что тип можно вывести из других троек. Например:

:myClass  owl:intersectionOf  ( owl:Thing ) .

требует, чтобы :myClass было owl:Class. Рассмотрим пример, который вы приводите:

:myClass owl:equivalentClass  
[owl:intersectionOf  (
  [ owl:onProperty :hasProp ; owl:allValuesFrom  :SomeOtherClass ]
  [ owl:onProperty :hasProp ; owl:someValuesFrom :SomeOtherClass ] )
] .

С одной стороны, :myClass должен быть классом из-за owl:equivalentClass; два пустых узла внутри списка обязательно owl:Restriction из-за использования предиката owl:onProperty; это означает, что пустой узел с атрибутом owl:intersectionOf обязательно является классом.

С другой стороны, неясно, является ли :SomeOtherClass классом или типом данных, потому что неизвестно, является ли :hasProp свойством объекта или свойством типа данных. Итак, здесь у вас есть ситуация, имеет ли значение явный ввод.

Теперь реальный вопрос может заключаться в следующем: «Мне действительно нужно явно применять эти типы на практике?» Я бы сказал, это зависит от инструментов, которые вы используете. Большинство процессоров OWL будут интерпретировать многие несовместимые графы RDF как допустимые онтологии OWL, но вы должны быть осторожны, так как могут произойти неожиданности. Например, я попытался открыть в Protégé файл, содержащий пример, который вы приводите. Protégé не удалось интерпретировать содержимое как определяющее какой-либо класс или свойство. Однако проблема была не из-за отсутствия owl:Restriction или owl:Class для пустых узлов. Если бы я просто добавил явный тип для :myClass, то Protégé интерпретировал содержимое как определяющее два класса, свойство объекта и аксиому о :myClass. Сравнивать:

# This does not work in Protégé 4.3
@prefix : <http://ex.com/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

:myClass owl:equivalentClass [
    owl:intersectionOf  (
        [ owl:onProperty :hasProp; owl:allValuesFrom  :SomeOtherClass ]
        [ owl:onProperty :hasProp; owl:someValuesFrom :SomeOtherClass ]
    )
] .

а также:

# This works in Protégé 4.3
@prefix : <http://ex.com/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

:myClass a owl:Class;
    owl:equivalentClass [
        owl:intersectionOf  (
            [ owl:onProperty :hasProp; owl:allValuesFrom  :SomeOtherClass ]
            [ owl:onProperty :hasProp; owl:someValuesFrom :SomeOtherClass ]
        )
    ] .

Что удивительно, так это то, что Protégé решил интерпретировать :hasProp как свойство объекта, в то время как это могло быть свойством типа данных.

Наконец, чтобы завершить этот ответ, я заметил, что если вы полностью откажетесь от типа owl:Restriction, онтологии в RDF по-прежнему будут распознаваться как допустимые онтологии OWL 2 DL валидатор Manchester OWL 2. Попробуйте это как вход:

@prefix : <http://ex.com/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

:SomeOtherClass a owl:Class .
:hasProp a owl:ObjectProperty .
:myClass a owl:Class;
  owl:equivalentClass [
    owl:intersectionOf  (
      [ owl:onProperty :hasProp; owl:allValuesFrom  :SomeOtherClass ]
      [ owl:onProperty :hasProp; owl:someValuesFrom :SomeOtherClass ]
    )
  ] .

Редактировать: я только что проверил спецификацию OWL 2, и оказалось, что график RDF выше следует классифицировать как документ онтологии OWL 2 DL. Однако в этом конкретном примере нет никакой двусмысленности в отношении типов сущностей.

person Antoine Zimmermann    schedule 22.02.2014
comment
Однако тот факт, что валидатор OWL 2 не жалуется, не означает, что анализируемая онтология соответствует тому, что онтология должна была представлять. В наборе тестов OWL 2 для разработчиков рассуждений многие онтологии в RDF/XML удаляют некоторые из упомянутых выше элементов и, как следствие, анализируются неправильно, так что здесь задействована еще одна переменная — поведение анализатора. Я не проверял это подробно, но вполне может быть, что синтаксический анализатор толерантен (т. е. произвольно разрешает неоднозначные ситуации). Пробег может варьироваться в зависимости от формата. Короче говоря: остерегайтесь возиться с сериализацией. - person Ignazio; 23.02.2014
comment
Игнацио, если валидатор классифицирует документ онтологии как OWL 2 DL, когда он не соответствует в точности фрагменту OWL 2 DL, то это ошибка. Валидатор — это не просто парсер. Он должен строго соответствовать спецификации и, таким образом, должен отклонять все неоднозначные ситуации. Я проверил стандарт, и мой последний пример не должен классифицироваться как документ онтологии OWL 2 DL, так что да, это ошибка в валидаторе. - person Antoine Zimmermann; 23.02.2014
comment
Я согласен, как с ошибкой, так и с целью валидатора. Я считаю, что валидаторы, поддерживающие веб-сайт, находятся в OWL API, и в этом случае они не смотрят непосредственно на ввод, а только на результаты синтаксического анализа. Таким образом, если парсер использует ярлык и не сообщает об этом, валидатор не имеет возможности узнать об этом. Я не утверждаю, что это не ошибка :-) просто обрисовываю в общих чертах некоторые действующие переменные. - person Ignazio; 23.02.2014
comment
Ребята спасибо. Я только что сделал еще один тест, в котором я попытался просмотреть онтограф в протеже со снятыми owl:Class и owl:Restrictions. экран отображался неправильно, и я получил это исключение. ClassCastException: uk.ac.manchester.cs.owl.owlapi.OWLAnonymousIndividualImpl cannot be cast to org.semanticweb.owlapi.model.OWLNamedIndividual Хотя после добавления всех owl:Class и owl:Restriction экран отобразился нормально, но я все еще вижу это сообщение. Возможно, протеже хочет, чтобы я явно объявлял вещи как owl:NamedIndividual ? - person Mike; 25.02.2014