Короче говоря, ваша онтология не является действительной онтологией OWL, и Protégé следует принципу «мусор на входе, мусор на выходе». Поскольку на вход поступают неверные данные (хотя Protégé пытается их спасти), вы получаете неверные данные (на самом деле, только восстановленные данные). Вы можете проверить онтологию с помощью Manchester OWL Validator, но вам нужно будет выбрать профиль OWL 2 DL, чтобы получить соответствующую диагностику. В вашем документе вывод:
Онтология и/или один из ее импортов НЕ находится в профиле OWL 2 DL.
Закрытие импорта
Ontology IRI Physical URI
OntologyID(OntologyIRI(<http://ideation.io/semapi>))
Подробный отчет
Использование зарезервированного словаря для класса IRI
SubClassOf(semapi:BaseClass rdfs:Class)
Использование необъявленного класса
SubClassOf(semapi:BaseClass rdfs:Class)
Помимо того, что у вас есть тройка:
<http://ideation.io/semapi>
a owl:Ontology .
в первом файле это вообще не похоже на онтологию OWL. Например.,
semapi:BaseClass a rdfs:Class;
rdfs:subClassOf rdfs:Class .
определяет некоторые классы, которые можно использовать в словаре RDFS, но не объявляет никаких owl:Class
es. Когда вы делаете что-то вроде
semapi:hasChainTo a owl:ObjectProperty;
rdfs:domain semapi:BaseClass;
rdfs:range semapi:BaseClass .
У вас есть owl:ObjectProperty
, которое будет связывать semapi:BaseClass
es, каждое из которых также является rdfs:Class
, поэтому у вас есть свойство объекта, которое будет связывать rdfs:Class
es, но в OWL DL свойства объекта могут связывать только отдельных людей. Где вы начинаете использовать списки RDF, т.е. в:
instances:Instance1 a semapi:DerivedClass;
semapi:hasChainTo (
[
a semapi:DerivedClass;
semapi:hasChainTo (
...
вы используете список RDF в качестве объекта в утверждении свойства объекта. Однако списки RDF нельзя использовать в OWL DL, поскольку они также используются в RDF-сериализации OWL. Тогда может показаться, что Protégé отбрасывает кучу информации, которая не имеет для него значения как сериализация RDF онтологии OWL. Можно возразить, что, когда Protégé не знает, что делать с некоторым RDF-файлом, который приходит, он должен его сохранить, но это действительно несостоятельная позиция, когда RDF — это всего лишь одна из возможных сериализаций сериализованного объекта (онтология OWL). что касается Protégé.
Инструмент lint
компании Pellet выдает ряд предупреждений:
[Untyped classes]
- http://ideation.io/semapi#DerivedClass
- http://ideation.io/semapi#BaseClass
- http://www.w3.org/2000/01/rdf-schema#Class
[Untyped individuals]
- 6 BNode(s)
[Using rdfs:Class instead of owl:Class]
- http://ideation.io/semapi#DerivedClass
- http://ideation.io/semapi#BaseClass
=========================================================
OWL 2 DL violations found for ontology <http://ideation.io/semapi>:
Use of undeclared class: <http://ideation.io/semapi#BaseClass> [ObjectPropertyRange(<http://ideation.io/semapi#hasChainTo> <http://ideation.io/semapi#BaseClass>) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#DerivedClass> [ClassAssertion(<http://ideation.io/semapi#DerivedClass> _:genid5) in <http://ideation.io/semapi>]
Use of undeclared class: rdfs:Class [SubClassOf(<http://ideation.io/semapi#BaseClass> rdfs:Class) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#DerivedClass> [ClassAssertion(<http://ideation.io/semapi#DerivedClass> _:genid11) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#BaseClass> [SubClassOf(<http://ideation.io/semapi#DerivedClass> <http://ideation.io/semapi#BaseClass>) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#DerivedClass> [ClassAssertion(<http://ideation.io/semapi#DerivedClass> _:genid9) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#BaseClass> [SubClassOf(<http://ideation.io/semapi#BaseClass> rdfs:Class) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#DerivedClass> [ClassAssertion(<http://ideation.io/semapi#DerivedClass> _:genid1) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#BaseClass> [ObjectPropertyDomain(<http://ideation.io/semapi#hasChainTo> <http://ideation.io/semapi#BaseClass>) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#DerivedClass> [ClassAssertion(<http://ideation.io/semapi#DerivedClass> _:genid7) in <http://ideation.io/semapi>]
Use of reserved vocabulary for class IRI: rdfs:Class [SubClassOf(<http://ideation.io/semapi#BaseClass> rdfs:Class) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#DerivedClass> [ClassAssertion(<http://ideation.io/semapi#DerivedClass> _:genid3) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#DerivedClass> [SubClassOf(<http://ideation.io/semapi#DerivedClass> <http://ideation.io/semapi#BaseClass>) in <http://ideation.io/semapi>]
Use of undeclared class: <http://ideation.io/semapi#DerivedClass> [ClassAssertion(<http://ideation.io/semapi#DerivedClass> <http://ideation.io/instances#Instance1>) in <http://ideation.io/semapi>]
No OWL lints found for ontology <http://ideation.io/semapi>.
<http://ideation.io/semapi> does not import other ontologies.
person
Joshua Taylor
schedule
06.08.2013