Йена проверяет мощность, не находит пропавшее имущество

#jena #ontology

Вопрос:

У меня есть файл онтологии ниже, проблема в том, что джена не находит неудовлетворенного ограничения.

Номер класса должен иметь ровно 1 свойство hasUnit для экземпляра масштаба. В экземпляре I1 отсутствует это свойство, но отчет о проверке jena показывает, что все в порядке.

Интересно, почему Джена не может обнаружить это пропавшее свойство.

 <?xml version="1.0"?>
<rdf:RDF xmlns="http://test#"
     xml:base="http://test"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:xml="http://www.w3.org/XML/1998/namespace"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
    <owl:Ontology rdf:about="http://test"/>
    <owl:ObjectProperty rdf:about="http://test#hasUnit"/>
    <owl:Class rdf:about="http://test#Characteristic"/>
    <owl:Class rdf:about="http://test#Numeric">
        <rdfs:subClassOf rdf:resource="http://test#Characteristic"/>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty rdf:resource="http://test#hasUnit"/>
                <owl:qualifiedCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:qualifiedCardinality>
                <owl:onClass rdf:resource="http://test#Scale"/>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:label>Numeric</rdfs:label>
    </owl:Class>
    <owl:Class rdf:about="http://test#Scale"/>
    <owl:NamedIndividual rdf:about="http://test#I1">
        <rdf:type rdf:resource="http://test#Numeric"/>
    </owl:NamedIndividual>
</rdf:RDF>
 

Код для рассуждений

 final var model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
model.read(..., null);
final var reasoner = ReasonerRegistry.getOWLReasoner();
final var infModel = ModelFactory.createInfModel(reasoner, ontModel);
final var validity = infModel.validate();
if (validity.isValid()) {
    log.info("OK");
} else {
    log.warn("Conflicts");
    for (var iterator = validity.getReports(); iterator.hasNext(); ) {
        log.warn(" - "   iterator.next());
    }
}
// => OK