Skip to content

Missing Sub-Class Relation in Inferred Class-Hierarchy #96

Description

@tobiaswjohn

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.

  • an example input:
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);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions