Пока не совсем понятно, что вы имеете в виду, когда делаете два свойства не-равными. По умолчанию два свойства могут быть разными, поэтому вам не нужно делать ничего особенного, чтобы сделать их неравными. Однако, если вопрос прояснится, возможно, можно будет добавить больше информации об этом.
Не совсем тривиально сказать, что, например,
а, х. 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
b1 hasFinish x; hasColor x
) или просто они не обязательно имеют одинаковое значение (например, чтоb2 hasFinish x; hasColor y
(сx != y
) разрешено)? Два отношения могут быть различными, но все же иметь перекрытие. Кроме того, вы можете не требовать, чтобы два отношения были одинаковыми, но фактически они могут иметь одно и то же расширение. - person Joshua Taylor   schedule 25.11.2013