Равная связь между свойствами онтологии

У меня есть 2 свойства, например. 'hasColor' и 'hasFinish'. Я хочу выразить с помощью онтологии, что в случае класса онтологии A свойства 'hasColor' и 'hasFinish' равны (owl:equivalentProperty). Но в случае класса онтологии B свойства hasColor и hasFinish НЕ равны.

Как я могу этого добиться?

Один из способов, вероятно, состоит в том, чтобы создать свойства hasColor и hasFinish с классом A в качестве диапазона и установить их равными. Затем создайте другие свойства hasColor и hasFinish с классом B в качестве диапазона и без равного отношения. Но правильный ли это подход?


person user3024710    schedule 24.11.2013    source источник
comment
Когда вы говорите, что они не равны для класса B, вы имеете в виду, что они должны иметь разные значения (например, у вас не может быть b1 hasFinish x; hasColor x) или просто они не обязательно имеют одинаковое значение (например, что b2 hasFinish x; hasColor yx != y) разрешено)? Два отношения могут быть различными, но все же иметь перекрытие. Кроме того, вы можете не требовать, чтобы два отношения были одинаковыми, но фактически они могут иметь одно и то же расширение.   -  person Joshua Taylor    schedule 25.11.2013


Ответы (1)


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

Не совсем тривиально сказать, что, например,

а, х. A(a) (hasFinish(a,x) hasColor(a,x))

в OWL, но вы можете это сделать. Если вы хотите сказать это для всех классов, вы можете, как вы указали, использовать owl:equivalentProperty. Теперь, когда вы говорите, что p эквивалентно свойству r, вы также можете сказать, что

р р
р р

то есть каждое из p и r является подсвойством другого. В OWL 2 (но, к сожалению, не в OWL 2 DL, как указал в комментариях Антуан Циммерманн) можно утверждать, что данное свойство является суперсвойством цепочки. свойств, например,

имеетОтец имеетБрат имеетДядя

в котором говорится, что если у кого-то есть отец, у которого есть брат, то брат этого отца является дядей этого человека.

Существует также концепция под названием ролификация, которая более подробно описана в ролификации OWL 2 и представляет собой процесс создания свойства, соответствующего к классу, который соотносит каждого индивидуума этого класса с самим собой. Для вашего класса A будет отношение RA, которое связывает каждый A сам с собой, и относится только те экземпляры. Если вы затем посмотрите на цепочку свойств, например

RA закончил

вы заметите, что это действительно подсвойство hasFinish, где первым аргументом является A. Это означает, что вы можете сказать, что hasFinish и hasColor являются одним и тем же для класса A, сделав два утверждения подсвойства:

RA hasColor hasFinish
RA hasFinish hasColor

Они предполагают, что индивидуумы типа А являются субъектами этих утверждений. Если A на самом деле является диапазоном здесь, вы просто используете

а, х. A(a) (hasFinish(x,a) hasColor(x,a))
hasColor RA hasFinish
hasFinish RA hasColor

Чтобы получить свойство RA, нужно добавить определение

А РА.Сам

к вашей онтологии. В Protégé это будет выглядеть так:

введите здесь описание изображениявведите здесь описание изображения введите здесь описание изображения

и результирующая онтология выглядит так (в RDF/XML):

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns="http://example.org/ep#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <owl:Ontology rdf:about="http://example.org/ep"/>
  <owl:Class rdf:about="http://example.org/ep#A">
    <owl:equivalentClass>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="http://example.org/ep#R_A"/>
        </owl:onProperty>
        <owl:hasSelf rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
        >true</owl:hasSelf>
      </owl:Restriction>
    </owl:equivalentClass>
  </owl:Class>
  <owl:ObjectProperty rdf:about="http://example.org/ep#hasFinish">
    <owl:propertyChainAxiom rdf:parseType="Collection">
      <owl:ObjectProperty rdf:about="http://example.org/ep#R_A"/>
      <owl:ObjectProperty rdf:about="http://example.org/ep#hasColor"/>
    </owl:propertyChainAxiom>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="http://example.org/ep#hasColor">
    <owl:propertyChainAxiom rdf:parseType="Collection">
      <owl:ObjectProperty rdf:about="http://example.org/ep#R_A"/>
      <owl:ObjectProperty rdf:about="http://example.org/ep#hasFinish"/>
    </owl:propertyChainAxiom>
  </owl:ObjectProperty>
</rdf:RDF>

и в Черепахе:

@prefix :      <http://example.org/ep#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

:hasFinish  a                   owl:ObjectProperty ;
        owl:propertyChainAxiom  ( :R_A :hasColor ) .

:A      a                    owl:Class ;
        owl:equivalentClass  [ a               owl:Restriction ;
                               owl:hasSelf     true ;
                               owl:onProperty  :R_A
                             ] .

:hasColor  a                    owl:ObjectProperty ;
        owl:propertyChainAxiom  ( :R_A :hasFinish ) .

<http://example.org/ep>
        a       owl:Ontology .

:R_A    a       owl:ObjectProperty .
person Joshua Taylor    schedule 25.11.2013
comment
Привет, Джошуа, спасибо за ответ, я изучу его, чтобы узнать больше об онтологиях. Однако я понял, что мой вопрос не ясен. Я использую равенство свойств (конструкция owl:sameAs) вместо эквивалентности (конструкция owl:equivalentProperty). Итак, я хочу сказать, что если экземпляр класса A, то свойства hasColor и hasFinish равны (owl:sameAs) - я рассматриваю их как свойства с одинаковым значением, но если эти свойства используются с индивидуумом класса B, тогда я хочу рассматривать их как разные свойства с другим значением. Я думаю, что это, вероятно, невозможно сделать с синтаксисом совы? - person user3024710; 26.11.2013
comment
Джошуа, отличный ответ. Обратите внимание, однако, что конструкция, которую вы используете, отсутствует в OWL 2 DL. Следовательно, некоторые рассуждающие могут быть не в состоянии сделать с ним выводы (например, Пелле, ЭрмиТ). Другие рассуждающие могут иметь дело с этой конструкцией, но только будучи неполными. - person Antoine Zimmermann; 26.11.2013
comment
user3024710, из вашего комментария здесь у меня сложилось впечатление, что вы неправильно понимаете понятие owl:sameAs. Вещь x является owl:sameAs вещью y, если x и y являются взаимозаменяемыми именами только одной вещи во всех возможных ситуациях. Нет контекстно-зависимого sameAs. - person Antoine Zimmermann; 26.11.2013
comment
@AntoineZimmermann Хм, я пытался удержаться в OWL 2 DL; можете уточнить, какой части нет в OWL 2 DL? Это что-то о сложности свойств в цепочке свойств? - person Joshua Taylor; 26.11.2013
comment
@AntoineZimmermann А, я только что прогнал его через валидатор; это цикл в цепочках подсвойств. Однако это, по-видимому, означает, что если мы используем только одно направление, мы можем получить, что если c имеет цвет d и d является A, то c также имеет конец d. Мы просто не можем иметь оба направления одновременно. - person Joshua Taylor; 26.11.2013
comment
@user3024710 user3024710 Чтобы расширить комментарий AntoineZimmermann, owl:sameAs предназначен для связи людей, а не свойств. Из его определения (курсив мой): встроенный OWL свойство owl:sameAs связывает один человек с другим человеком. Такой оператор owl:sameAs указывает, что две ссылки URI на самом деле ссылаются на одно и то же: люди имеют одинаковую идентичность. Свойства не являются отдельными лицами, поэтому их нельзя связать с owl:sameAs. Хотя мой ответ не относится к OWL 2 DL, как указал Антуан Циммерманн, он имеет эффект… - person Joshua Taylor; 26.11.2013
comment
@ user3024710 что везде, где у вас есть x hasColor y && y is an A, у вас также есть x hasFinish y и наоборот, но только в случае, когда y is an A. Это похоже на то, что вы хотели; если объект является элементом определенного класса, то один и тот же субъект и объект связаны друг с другом свойством. Именно это означает, что два свойства, ограниченные определенным диапазоном, эквивалентны. - person Joshua Taylor; 26.11.2013
comment
Разве hasUncle ⊑ hasFather • hasBrother не наоборот? Все остальное, что я читал, показывает это как hasFather • hasBrother ⊑ hasUncle. Я что-то пропустил? - person Jim L.; 13.04.2016
comment
@ДжимЛ. Да, это опечатка. Я исправлю это. Все скриншоты в вопросе показывают это наоборот. И OWL не позволяет вам сделать это с цепочкой подсвойств в качестве суперкласса. (Это было бы сложно, поскольку это означало бы, что если hasUncle(x,y), то существует некоторый z, такой что hasFather(x,z) и hasBrother(z,y). - person Joshua Taylor; 13.04.2016