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);
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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