2015-02-13 4 views
0

Учтите, что у меня есть классы A и B в OWL. Существуют два разных свойства объекта P1 и P2, диапазоны которых являются классом C и областями A и B соответственно.Создание подкласса OWL на основе равенства двух свойств объекта

Я хочу создать класс D, который представляет любого А, который содержит свойство P1 объекта, значение которого равно любой объект недвижимости P2, содержащегося В.

Можно ли описать это с помощью OWL?

+1

«Они оба имеют два различных свойства объекта P1 и P2, чьи диапазоны класс С. " Что ты хочешь этим сказать? Свойства не относятся к классам; OWL не является объектно-ориентированным языком программирования. Вы имеете в виду, что * домены * P1 и P2 являются A и B соответственно? –

+0

Да, именно это я и имел в виду. Новое в этой области, как это можно наблюдать. – user1364591

ответ

3

Я хочу создать класс D, который представляет любой А, который содержит свойство P1 объекта, значение которого равно любой объект недвижимости P2 содержавшимся В.

Я думаю, что вы» повторно ищу выражение класса, как это (в DL и Манчестер синтаксисах):

D ≡ ⊓ ∃ & thinsp; р . (∃ & thinsp; р 2 -1 .B)

D equivalentClassи (р1 некоторые (обратное (р2) некоторые В)))

Это говорит о том, что что-то есть D тогда и только тогда, когда оно является A, и имеет некоторое значение для p1, которое является значением p2 некоторые экземпляр B.

Если домены Р1 и Р2 А и В, соответственно, то вы можете упростить, что:

D ≡ ∃ & thinsp; р . ∃ & thinsp; р -1

D equivalentClass р1 некоторые (обратное (р2) некоторые вещь)

Вот что первая выглядит как в N3 RDF-сериализация OWL.

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

:A  a  owl:Class . 
:B  a  owl:Class . 

:p  a  owl:ObjectProperty . 
:q  a  owl:ObjectProperty . 

:D  a     owl:Class ; 
     owl:equivalentClass [ a     owl:Class ; 
           owl:intersectionOf (:A _:b0) 
          ] . 

_:b0 a     owl:Restriction ; 
     owl:onProperty  :p ; 
     owl:someValuesFrom [ a     owl:Restriction ; 
           owl:onProperty  [ owl:inverseOf :q ] ; 
           owl:someValuesFrom :B 
          ] . 

Если у вас есть домен и диапазон аксиомам, так что вы можете использовать более простую форму, это было бы:

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

:A  a  owl:Class . 
:B  a  owl:Class . 

:p  a   owl:ObjectProperty ; 
     rdfs:domain :A . 
:q  a   owl:ObjectProperty ; 
     rdfs:domain :B . 

:D  a     owl:Class ; 
     owl:equivalentClass [ a     owl:Restriction ; 
           owl:onProperty  :p ; 
           owl:someValuesFrom [ a     owl:Restriction ; 
                owl:onProperty  [ owl:inverseOf :q ] ; 
                owl:someValuesFrom owl:Thing 
                ] 
          ] .