Экспортируйте выведенную аксиому в Протеже
Я изучаю онтологии и инструмент Protege. Я создал базовую онтологию из 3 классов A, B и C.
Я использую свойство Equivalence, чтобы утверждать, что класс A эквивалентен классу B. Класс B эквивалентен классу C. Затем я использую рассуждение (Пеллет), чтобы определить, что класс A эквивалентен классу C.
Эти переходные отношения прекрасно работают в Protege. Я вижу желтым, что класс A эквивалентен классу C и наоборот.
Я хочу экспортировать эту выведенную аксиому из инструмента Protege. Я захожу в "Файл -> Экспортировать предполагаемые аксиомы как онтологию" и выбираю все параметры на первом экране, но не выбираю никаких параметров на втором экране. Наконец, я сохраняю файл как OWL в синтаксисе RDF/XML.
Теперь, когда я открываю этот новый файл, я не вижу никакой тройки, связанной с выведенной аксиомой, то есть класс A эквивалентен классу C. Фактически, это та же самая онтология, что и моя исходная онтология.
Я не знаю, что мне не хватает. Я также попытался импортировать экспортированный файл в мою исходную онтологию через "вкладку активной онтологии" Protege, а затем выполнил "Файл -> Экспортировать предполагаемые аксиомы как онтологию", но все же выходной файл не содержит предполагаемой тройки. При загрузке в Protege и с помощью функцииусловия вывод работает, но я хочу, чтобы Protege экспортировал этот вывод в файл OWL.
Является ли это возможным? Я потратил много часов на это и смотрел в Интернете, но не нашел никакого решения. Я пропускаю шаг?
Кстати, я использовал последнюю версию Protege 5.2, а также пробовал версию 4.3, чтобы увидеть, есть ли ошибка, но результат был тот же.
Спасибо
Вот онтология, которую я использую.
///////////////////////////////////////////////////////////////////////////////////////
//
// Classes
//
///////////////////////////////////////////////////////////////////////////////////////
<!-- http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#A -->
<owl:Class rdf:about="http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#A">
<owl:equivalentClass rdf:resource="http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#B"/>
</owl:Class>
<!-- http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#B -->
<owl:Class rdf:about="http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#B">
<owl:equivalentClass rdf:resource="http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#C"/>
</owl:Class>
<!-- http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#C -->
<owl:Class rdf:about="http://www.semanticweb.org/sesa388470/ontologies/2017/9/23/untitled-ontology-110#C"/>
ОБНОВЛЕНИЕ 1: Если я выберу OWL/XML в качестве формата онтологии на последнем шаге "Файл -> Экспортировать предполагаемые аксиомы как онтологию", я могу увидеть следующее в результирующем файле онтологии.
<Declaration>
<Class IRI="#A"/>
</Declaration>
<Declaration>
<Class IRI="#C"/>
</Declaration>
<Declaration>
<Class IRI="#B"/>
</Declaration>
<EquivalentClasses>
<Class IRI="#A"/>
<Class IRI="#B"/>
<Class IRI="#C"/>
</EquivalentClasses>
Ранее я экспортировал онтологию в формате RDF/XML. По крайней мере, я вижу, что A, B и C являются эквивалентными классами. Может быть, это проблема RDF против OWL?
ОБНОВЛЕНИЕ 2: Я получил следующий ответ в списке разработчиков Protege. Кажется, что выведенные аксиомы не сохраняются в формате RDF/XML.
" Синтаксис OWL RDF/XML не поддерживает n-арные конструкторы, такие как эквивалентные классы, потому что все должно быть представлено триплетами (из-за RDF). В вашем примере выведенная аксиома EquivalentClasses(A B C) сериализуется в RDF [1] (см. Таблицу 1) чтобы
Сова: эквивалентный класс B.
B сова: эквивалент класса C.
Другие форматы, такие как OWL/XML или OWL Синтаксис функционального стиля, поддерживают n-арные аксиомы. Это в соответствии с тем, что вы наблюдаете.
Кроме того, обратите внимание на то, что в соответствующем примечании учтите, что генератор предполагаемых аксиом не сохраняет все выведенные аксиомы, которые были созданы мыслителем. Например, если ваша онтология имеет аксиомы A subClassOf B и B subClassOf C, то выведенная аксиома A subClassOf C не будет сохранена, как это следует из других (предполагаемых) аксиом A subClassOf B и B subClassOf C. Только не избыточные выведенные аксиомы (которые не вытекают из других предполагаемых аксиом), сохраняются. Это потому, что может быть слишком много предполагаемых аксиом ".
1 ответ
Я понимаю что ты имеешь в виду. Вы ожидаете увидеть эквивалентную аксиому класса между A и C в экспортированной онтологии, верно?
Я могу воспроизвести это. Похоже, что редактор Protege предполагает, что это уже утвержденная аксиома. По крайней мере, когда я снова открываю онтологию, редактор отображает ее как таковую в дереве иерархии классов:
Входная онтология:
@prefix : <http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3> .
<http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3> rdf:type owl:Ontology .
#################################################################
# Classes
#################################################################
### http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#A
:A rdf:type owl:Class ;
owl:equivalentClass :B .
### http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#B
:B rdf:type owl:Class ;
owl:equivalentClass :C .
### http://www.semanticweb.org/user/ontologies/2017/9/untitled-ontology-3#C
:C rdf:type owl:Class .
### Generated by the OWL API (version 4.2.8.20170104-2310) https://github.com/owlcs/owlapi
После экспорта выведенных аксиом и повторного открытия в Protege:
Это может быть либо ошибка, либо ожидаемое поведение. Сначала вы должны спросить в списке рассылки Protege.