我刚刚从TopBraid切换到试用Protege。
我有一个类似于此的RDF的本体:
instances:some_thing1 a semapi:SomeClass ;
semapi:hasChainTo (
[
a semapi:SomeOtherClass ;
semapi:hasChainTo (
[ ... ]
[ ... ]
)
]
) .
这个想法是这个嵌套的空白节点语法很有效,因为链变得非常深,这种语法流畅,高度可读和可维护,因为链可能会不时变化,并且可以添加新的链。
不仅如此,我已经为结果图编写了查询。
问题是,如果我将其导入Protege然后立即将其保存,则结果会重新格式化为:
instance:some_thing1 rdf:type semapi:SomeClass ,
owl:NamedIndividual ;
semapi:hasChainTo [ ] .
[ rdf:type semapi:SomeClass ;
semapi:hasChainTo [ ]
] .
生成的RDF完全破坏了查询系统以及使用此方法表示“链接”的其他好处。
有什么方法可以解决这个问题吗?如果不是,我可能会被迫切换回TopBraid。
更新:以下是该问题的复制品:
我写了bugTest.ttl
然后在Protege中打开它并立即另存为>龟> bugTestOutput.ttl
:
https://dl.dropboxusercontent.com/u/13814624/bugTest.ttl https://dl.dropboxusercontent.com/u/13814624/bugTestOutput.ttl
答案 0 :(得分:1)
简而言之,你的本体论不是一个有效的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:类)
使用未申报的课程
SubClassOf(semapi:BaseClass的 RDFS:类)
除了你有三联的事实:
<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
,所以你有一个与之相关的对象属性instances:Instance1 a semapi:DerivedClass;
semapi:hasChainTo (
[
a semapi:DerivedClass;
semapi:hasChainTo (
...
es,但在OWL DL中,对象属性只能涉及个人。您开始使用RDF列表的位置,即:
lint
您正在使用RDF列表作为对象属性断言中的对象。但是,RDF列表不能在OWL DL中使用,因为它们也用于OWL的RDF序列化。那么,似乎Protégé正在丢弃一堆对它没有意义的信息作为OWL本体的RDF序列化。有人可能会争辩说,当Protégé不知道某些RDF会进入什么时,它应该保留它,但是当RDF只是序列化事物的一个可能序列化时(OWL本体),这真的是一个站不住脚的位置Protégé关心的是。
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.
工具会产生许多警告:
{{1}}