Получение URI в отчете о нарушениях OWL2DL в OWL API - PullRequest
0 голосов
/ 19 мая 2018

Мне нужно проверить нарушения профиля OWL2DL в этой упрощенной онтологии:

@prefix : <http://www.onto.com/test#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://www.onto.com/test#> .

<http://www.onto.com/test#> rdf:type owl:Ontology ;
                             rdfs:label "Test"@en .

xsd:date rdf:type rdfs:Datatype .

<http://www.onto.com/test#hasPart2> rdf:type owl:ObjectProperty .

<http://www.onto.com/test#isPartOf> rdf:type owl:ObjectProperty ,
                                             owl:TransitiveProperty ;
                                    rdfs:domain <http://www.onto.com/test#TestRestriction> .

<http://www.onto.com/test#isPartOf2> rdf:type owl:ObjectProperty ;
                                     rdfs:subPropertyOf owl:topObjectProperty ;
                                     rdf:type owl:TransitiveProperty ;
                                     rdfs:domain <http://www.onto.com/test#A2PartOfClass> .

<http://www.onto.com/test#maxCardinality0> rdf:type owl:ObjectProperty .

<http://www.onto.com/test#A2PartOfClass> rdf:type owl:Class .

<http://www.onto.com/test#TestRestriction> rdf:type owl:Class ;
                                           rdfs:subClassOf [ rdf:type owl:Restriction ;
                                                             owl:onProperty <http://www.onto.com/test#isPartOf2> ;
                                                             owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ;
                                                             owl:onClass <http://www.onto.com/test#A2PartOfClass>
                                                           ] ;
                                           rdfs:comment "A1 PartOf Class Comment"@en ;
                                           rdfs:label "A1PartOfClass"@en .


<http://www.onto.com/test#isPartOf2> rdf:type owl:Class .

Для этого у меня есть следующий код в API OWL, чтобы проверить нарушения данной онтологии дляпрофиль OWL2DL.

OWL2DLProfile profile = new OWL2DLProfile();
OWLProfileReport report = profile.checkOntology(ontology);
for(OWLProfileViolation v:report.getViolations()) {
   System.out.println(v);
}

В консоли я получаю следующее:

Use of non-simple property in a restriction: ObjectMinCardinality(0 <http://www.onto.com/test#isPartOf2> <http://www.onto.com/test#A2PartOfClass>) [SubClassOf(<http://www.onto.com/test#TestRestriction> ObjectMinCardinality(0 <http://www.onto.com/test#isPartOf2> <http://www.onto.com/test#A2PartOfClass>)) in OntologyID(OntologyIRI(<http://www.onto.com/test#>) VersionIRI(<null>))]

И я хотел бы получить соответствующие URI, то есть http://www.onto.com/test#isPartOf2, http://www.onto.com/test#A2PartOfClass а также сообщение о нарушении, т. Е. Использование непростого свойства в ограничении.

Как этого добиться?

1 Ответ

0 голосов
/ 20 мая 2018

Вы можете получить подпись аксиомы, связанной с нарушением, следующим образом:

violation.getAxiom()
  .signature()
  .forEach(System.out::println);

Нет простого способа определить тип нарушения, кроме следующих действий:

violation.getClass().getSimpleName()

, который вернет UseOfNonSimplePropertyInCardinalityRestriction.

...