Ограничения OWL: определение классов, которые зависят от иерархии понятий - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть иерархия skos:Concept s, и я хочу определить owl:Class, состоящий из тех людей, которые связаны с определенным понятием или одним из его более узких терминов через какое-то свойство. Мне удалось создать owl:Restriction, который работает для одной конкретной концепции, но не для иерархии понятий:

# Concept hierarchy
concepts:Dance a skos:Concept .
concepts:FolkDance a skos:Concept ;
    skos:broaderTransitive concepts:Dance .
concepts:SquareDance a skos:Concept ;
    skos:broaderTransitive concepts:FolkDance .

# owl axioms
ex:Dance rdfs:subClassOf ex:Movement ;
    owl:equivalentClass [
        a owl:Restriction ;
        owl:onProperty ex:hasKindOfMovement ;
        owl:hasValue concepts:Dance
    ] .

# Assertions
ex:SomeInstance ex:hasKindOfMovement concepts:Dance .

Вышеуказанное правильно делает ex:someInstance экземпляром ex:Dance. Но как я могу сделать ex:anotherInstance членом ex:Dance, если у меня есть утверждение

ex:anotherInstance ex:hasKindOfMovement concepts:SquareDance

? И. е. где индивид в owl:hasValue является транзитивно более узким понятием, чем тот, который указан в ограничении.

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

1 Ответ

0 голосов
/ 13 сентября 2018

Вариант 1 (SWRL)

Определить skos:broaderTransitive:

skos:broaderTransitive a owl:TransitiveProperty .
skos:broader rdfs:subPropertyOf skos:broaderTransitive .

Затем используйте SWRL:

ex:hasKindOfMovement(?a, ?b) ^ skos:broaderTransitive(?b, ?c) -> ex:hasKindOfMovement(?a, ?c)

Вариант 2 (глобальная рефлексивность)

Определить skos:broaderTransitiveAndReflexive:

skos:broaderTransitiveAndReflexive a owl:TransitiveProperty, owl:ReflexiveProperty .
skos:broader rdfs:subPropertyOf skos:broaderTransitiveAndReflexive .

Затем объявите ex:hasKindOfMovementTransitiveAndReflexive как цепочку свойств:

ex:hasKindOfMovementTransitiveAndReflexive a owl:ObjectProperty ;
                                           owl:propertyChainAxiom
                                                     (
                                                      ex:hasKindOfMovement
                                                      skos:broaderTransitiveAndReflexive
                                                     ) .

Наконец, определите ex:Dance следующим образом:

ex:Dance rdfs:subClassOf ex:Movement ;
         owl:equivalentClass [ rdf:type owl:Restriction ;
                               owl:onProperty ex:hasKindOfMovementTransitiveAndReflexive ;
                               owl:hasValue concepts:Dance
                             ] .         

К сожалению, рефлексивность - это глобальная характеристика , умозаключение также выведет, что

ex:someInstance skos:broaderTransitiveAndReflexive ex:someInstance 

Вариант 3 (местная рефлексивность)

Как декларировать рефлексивность локально, т.е. е. только для skos:Concept? Определите skos:notNarrower следующим образом:

skos:broader rdfs:subPropertyOf skos:notNarrower .
skos:notNarrower rdfs:subPropertyOf skos:broaderTransitiveAndReflexive .

Тогда скажите:

skos:Concept rdfs:subClassOf [ rdf:type owl:Restriction ;
                               owl:onProperty skos:notNarrower ;
                               owl:hasSelf true
                             ] .

Зачем вам нужна эта иерархия свойств? Почему бы не сказать просто (1) или (2)? -

  1.  skos:Concept rdfs:subClassOf [ rdf:type owl:Restriction ;
                                    owl:onProperty skos:broader ;
                                    owl:hasSelf true
                                  ] .
    

или

  1.  skos:Concept rdfs:subClassOf [ rdf:type owl:Restriction ;
                                    owl:onProperty skos:broaderTransitiveAndReflexive ;
                                    owl:hasSelf true
                                  ] .
    

Причины:

  1. Первый игнорирует семантику SKOS.

  2. Последний игнорирует OWL 2 DL ограничения . Размышляющий скажет что-то вроде:

    Непростое свойство skos:broaderTransitiveAndReflexive появляется в самоограничении

    Грубо говоря, простое выражение свойства объекта не имеет прямых или косвенных подвойств, которые являются либо транзитивными, либо определяются с помощью цепочек свойств.

Вариант 4 (классы OWL вместо концепций SKOS)

Как предложено AKSW, замените иерархию понятий на иерархию классов.

Если у вас есть устаревшая таксономия SKOS, используйте OWL punning или аннотаций для взаимосвязи.

ОБНОВЛЕНИЕ

Полные онтологии в синтаксисе Манчестера:

  • Вариант 1 (SWRL)
  • Вариант 2 (глобальная рефлексивность) - используйте HermiT, а не Pellet
  • Опция 3 (местная рефлексивность) - используйте HermiT, а не Pellet
  • Опция 4 (аннотации и штамповка) - используйте DL Query, чтобы увидеть, что ex:anotherInstance a ex:Dance.
...