Короче , ваша онтология не является действительной онтологией OWL, и Protégé следует принципу «мусора, мусора». Так как некоторые плохие данные поступают (хотя Protégé пытается его спасти), вы получаете плохие данные (фактически, только данные, которые были спасены). Вы можете проверить онтологию с помощью Manchester OWL Validator, но вам нужно выбрать профиль OWL 2 DL, чтобы получить соответствующую диагностику.На документе, выход:
Онтология и/или один из его импорта НЕ в профиле DL OWL 2
Импорт Закрытие
Ontology IRI Physical URI
OntologyID(OntologyIRI(<http://ideation.io/semapi>))
Подробный отчет
Использование зарезервированного словарного запаса для класса IRI
SubClassOf (semapi: BaseClass RDFS: Class)
Использование необъявленной класса
SubClassOf (semapi: BaseClass RDFS: Класс)
Помимо тот факт, что у вас есть тройной:
<http://ideation.io/semapi>
a owl:Ontology .
В первом файле это вообще не является онтологией OWL. НАПРИМЕР,
semapi:BaseClass a rdfs:Class;
rdfs:subClassOf rdfs:Class .
является определение некоторых классов, которые могут быть использованы в ИСС лексики, но не объявляла owl:Class
эс. Когда вы делаете что-то вроде
semapi:hasChainTo a owl:ObjectProperty;
rdfs:domain semapi:BaseClass;
rdfs:range semapi:BaseClass .
у вас есть owl:ObjectProperty
, что собирается быть в отношении semapi:BaseClass
Э.С., каждый из которых также rdfs:Class
, поэтому у вас есть свойство объекта, который собирается быть в отношении rdfs:Class
эсов, но в OWL DL свойства объекта могут относиться только к отдельным лицам. Где вы начинаете использовать списки RDF, то есть в:
instances:Instance1 a semapi:DerivedClass;
semapi:hasChainTo (
[
a semapi:DerivedClass;
semapi:hasChainTo (
...
вы используете список RDF в качестве объекта в объект собственности утверждения. Однако списки RDF не могут использоваться в OWL DL, поскольку они также используются в сериализации RWF 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.
Благодарим Вас за предоставление некоторых образцов данных; они иллюстрируют тип проблемы, с которой вы сталкиваетесь. Если все так, как вы говорите, это похоже на то, что TopBraid или Protégé теряют важную информацию в процессе сохранения или чтения, и это плохая вещь. Учитывая серьезность проблемы, можете ли вы представить минимальный пример (полные файлы RDF), которые иллюстрируют эту проблему?Часто попытка воспроизвести проблему минимальным образом покажет проблему с вашей стороны, которая раньше не была очевидна, или же служит очень хорошим образцом для отправки соответствующим разработчикам. –
Кроме того, это похоже на проблему, которая находится либо в TopBraid, либо в Protégé, но не в обоих. Если есть некоторая сериализация RDF онтологии, которую Protégé управляет, она должна делать это независимо от того, какое приложение создало ее. Точно так же, если TopBraid производит мусор, он должен делать это независимо от того, кто его потребляет. –
Спасибо за ответ. Я попытаюсь воспроизвести бит проблемы сейчас. – parliament