Java 在load本体中处理未声明的属性,如在Protege中

Java 在load本体中处理未声明的属性,如在Protege中,java,owl-api,Java,Owl Api,如何在java中重现Protege使用owlapi加载本体的方式? 就像我使用: ontologyBase = ontologyManager.loadOntologyFromOntologyDocument(inFile); 结果: [main] WARN org.semanticweb.owlapi.rdf.rdfxml.parser.Translators - Property http://www.example.com/individual/prp#keyPA is undeclar

如何在java中重现Protege使用owlapi加载本体的方式? 就像我使用:

ontologyBase = ontologyManager.loadOntologyFromOntologyDocument(inFile);
结果:

[main] WARN org.semanticweb.owlapi.rdf.rdfxml.parser.Translators - Property http://www.example.com/individual/prp#keyPA is undeclared at this point in parsing: typing as OWLDataProperty
[main] WARN org.semanticweb.owlapi.rdf.rdfxml.parser.Translators - Property http://www.example.com/individual/prp#keyPB is undeclared at this point in parsing: typing as OWLDataProperty
未声明的属性被声明为OWLDataProperty,但Protege load ontology导致将其声明为OWLAnnotationProperty

编辑: 本体论:

<http://www.example.com/individual/prp#keyC> <http://www.w3.org/2002/07/owl#hasKey> <http://www.example.com/individual/prp#keyU> .
<http://www.example.com/individual/prp#keyU> <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.example.com/individual/prp#keyPA> .
<http://www.example.com/individual/prp#keyU> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.example.com/individual/prp#keyEA> .
<http://www.example.com/individual/prp#keyEA> <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.example.com/individual/prp#keyPB> .
<http://www.example.com/individual/prp#keyEA> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
<http://www.example.com/individual/prp#keyX> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.com/individual/prp#keyC> .
<http://www.example.com/individual/prp#keyX> <http://www.example.com/individual/prp#keyPA> <http://www.example.com/individual/prp#keyZA> .
<http://www.example.com/individual/prp#keyX> <http://www.example.com/individual/prp#keyPB> <http://www.example.com/individual/prp#keyZB> .
<http://www.example.com/individual/prp#keyY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.com/individual/prp#keyC> .
<http://www.example.com/individual/prp#keyY> <http://www.example.com/individual/prp#keyPA> <http://www.example.com/individual/prp#keyZA> .
<http://www.example.com/individual/prp#keyY> <http://www.example.com/individual/prp#keyPB> <http://www.example.com/individual/prp#keyZB> .

从示例本体中解析的公理如下:

HasKey(<http://www.example.com/individual/prp#keyC> () (<http://www.example.com/individual/prp#keyPA> <http://www.example.com/individual/prp#keyPB> ))
ClassAssertion(<http://www.example.com/individual/prp#keyC> <http://www.example.com/individual/prp#keyX>)
ClassAssertion(<http://www.example.com/individual/prp#keyC> <http://www.example.com/individual/prp#keyY>)
AnnotationAssertion(<http://www.example.com/individual/prp#keyPA> <http://www.example.com/individual/prp#keyY> <http://www.example.com/individual/prp#keyZA>)
AnnotationAssertion(<http://www.example.com/individual/prp#keyPA> <http://www.example.com/individual/prp#keyX> <http://www.example.com/individual/prp#keyZA>)
AnnotationAssertion(<http://www.example.com/individual/prp#keyPB> <http://www.example.com/individual/prp#keyY> <http://www.example.com/individual/prp#keyZB>)
AnnotationAssertion(<http://www.example.com/individual/prp#keyPB> <http://www.example.com/individual/prp#keyX> <http://www.example.com/individual/prp#keyZB>)
警告是关于临时类型为数据属性的未声明属性。解析器猜测,如果没有发现任何公理反驳类型猜测,那么类型将被保留。但在这种情况下,这不会发生,因为使用了个人作为属性的对象,所以猜测被丢弃


换句话说,您的代码正在解析本体,就像Protege一样。

要回答这个问题,我们必须查看本体的内容。这些警告消息表示,数据属性是基于使用情况对类型的猜测,而不是该属性将被声明为该类型。