Сова 2 ролификация
В логике описания есть понятие, называемое "rolification" ( OWL и Rules, раздел 3.2). Он преобразует концепт (класс) в роль (свойство). Например, когда мы свертываем R(x)
, мы получаем r(x,x)
, Этот метод полезен для выражения некоторых правил в DL.
Как мы это делаем в OWL 2? Кажется, что в спецификации OWL 2 нет прямой поддержки ролификации.
1 ответ
Раздел 3.2 статьи, на которую вы ссылаетесь, гласит:
Это действительно возможно перевести это правило в OWL 2, однако это включает в себя преобразование, которое мы называем ролификацией. Ролификация концепта A - это (новая) роль R A, определяемая аксиомой A ≡ ∃R A. Самость. Вооружившись игрой, мы можем теперь выразить правило (1) по аксиоме…
OWL2 не поддерживает выражение аксиомы, например, Elephant (x), Mouse(y) → больше Than(x,y) напрямую. Насколько я понимаю, вы вручную используете процесс ролификации, описанный в статье, для создания новой аксиомы, которая может быть выражена непосредственно в OWL2.
Rolification
Что касается конкретного процесса, если вы хотите выразить что-то вроде Elephant (x) ∧ Mouse(y) → largeThan(x,y), вы сначала сверните классы Elephant и Mouse. Это означает, что вы вводите новые роли (свойства) R Elephant и R Mouse (но вы не удаляете классы Elephant и Mouse). Эти новые роли таковы, что R Elephant (x, x) тогда и только тогда, когда Elephant (x). Это обеспечивается добавлением аксиом
Слон ≡ ∃R Слон. Сам
Мышь Mouse ∃R Мышь
каждый из которых выразим в OWL2. С этими двумя аксиомами вы, наконец, добавляете аксиому цепочки субпредприятий
R Elephant • topObjectProperty • R Mouse ⊑ больше, чем
что также выражается в OWL2. Так как для любого слона е и любой мыши м, у нас есть это
R Elephant (е, е)
topObjectProperty (е, м)
R Mouse (м, м)
тогда по аксиоме цепочки субпредприятий мы имеем
biggerThan(е, м)
это именно то, что мы хотели выразить.
Аксиома Синтаксис
Во входном синтаксисе, принятом Protege, эти аксиомы записываются следующим образом.
Эквивалент слона R_Elephant
Эквивалент мыши для R_Mouse Some Self
R_Elephant o topObjectProperty o R_mouse SubPropertyOf больше Than
В Протеже они выглядят следующим образом.
В N3:
@prefix : <http://www.example.org/rolification#> .
@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#> .
:Elephant
a owl:Class ;
owl:equivalentClass
[ a owl:Restriction ;
owl:hasSelf "true"^^xsd:boolean ;
owl:onProperty :R_Elephant
] .
:R_Elephant
a owl:ObjectProperty .
:biggerThan
a owl:ObjectProperty ;
owl:propertyChainAxiom
(:R_Elephant owl:topObjectProperty :R_Mouse) .
:Mouse
a owl:Class ;
owl:equivalentClass
[ a owl:Restriction ;
owl:hasSelf "true"^^xsd:boolean ;
owl:onProperty :R_Mouse
] .
<http://www.example.org/rolification>
a owl:Ontology .
:R_Mouse
a owl:ObjectProperty .
В 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="http://www.example.org/rolification#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="http://www.example.org/rolification"/>
<owl:Class rdf:about="http://www.example.org/rolification#Elephant">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty>
<owl:ObjectProperty rdf:about="http://www.example.org/rolification#R_Elephant"/>
</owl:onProperty>
<owl:hasSelf rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
>true</owl:hasSelf>
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:about="http://www.example.org/rolification#Mouse">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty>
<owl:ObjectProperty rdf:about="http://www.example.org/rolification#R_Mouse"/>
</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://www.example.org/rolification#biggerThan">
<owl:propertyChainAxiom rdf:parseType="Collection">
<owl:ObjectProperty rdf:about="http://www.example.org/rolification#R_Elephant"/>
<rdf:Description rdf:about="http://www.w3.org/2002/07/owl#topObjectProperty"/>
<owl:ObjectProperty rdf:about="http://www.example.org/rolification#R_Mouse"/>
</owl:propertyChainAxiom>
</owl:ObjectProperty>
</rdf:RDF>