I am using Openllet to compute the class hierarchy of an ontology. I discovered a case, where Openllet misses a sub-class relation that should be part of the class hierarchy. I think, the issue occurs, because the data type xsd:normalizedString is not treated as a sub-type of xsd:String. I am not 100% sure, but my interpretation of the corresponding standard (W3C recommendation) is that every xsd:normalizedString is also a xsd:String.
Prefix(:=<http://www.example.org#>)
Ontology(
Declaration(Class(:A))
Declaration(Class(:B))
Declaration(DataProperty(:p))
SubClassOf(:A DataSomeValuesFrom(:p xsd:normalizedString))
SubClassOf(DataSomeValuesFrom(:p xsd:string) :B)
)
- the problem: Openllet does not infer
SubClassOf(:A :B), although it should be entailed.
- Here is the call from my program:
OWLOntologyDocumentSource source = new FileDocumentSource(ontFile, new FunctionalSyntaxDocumentFormat());
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ont = manager.loadOntologyFromOntologyDocument(source);
OpenlletReasonerFactory rf = new OpenlletReasonerFactory();
OWLReasoner openllet = rf.createReasoner(ont);
/// class hierarchy
InferredSubClassAxiomGenerator subClassGenerator = new InferredSubClassAxiomGenerator();
if (openllet.isConsistent()) {
openllet.precomputeInferences(InferenceType.CLASS_HIERARCHY);
Set<OWLSubClassOfAxiom> subClassAxioms = subClassGenerator.createAxioms(manager.getOWLDataFactory(), openllet);
}
I am using Openllet to compute the class hierarchy of an ontology. I discovered a case, where Openllet misses a sub-class relation that should be part of the class hierarchy. I think, the issue occurs, because the data type
xsd:normalizedStringis not treated as a sub-type ofxsd:String. I am not 100% sure, but my interpretation of the corresponding standard (W3C recommendation) is that everyxsd:normalizedStringis also axsd:String.SubClassOf(:A :B), although it should be entailed.