Индивидуальное описание (owl-api) - PullRequest
0 голосов
/ 20 сентября 2018

Я хотел бы добавить это утверждение (из Protégé "Индивидуальное описание" ) с помощью java owl-api:

person hasProperty only (ClassA or ClassB )

Как:

<ClassAssertion>
  <ObjectAllValuesFrom>
    <ObjectProperty IRI=“#hasProperty”/>
      <ObjectUnionOf>
        <Class IRI=“#ClassA”/>
        <Class IRI=“#ClassB”/>
       </ObjectUnionOf>
   </ObjectAllValuesFrom>
  <NamedIndividual IRI=“#Person”/>
</ClassAssertion

Как я могу это сделать?

OWLClass c1 = factory.getOWLClass(":ClassA", prefix );

OWLClass c2 = factory.getOWLClass(":ClassB", prefix );

OWLObjectProperty p = factory.getOWLObjectProperty("hasProperty", prefix);

OWLObjectIntersectionOf u = factory.getOWLObjectUnionOf(c1, c2);

OWLClassExpression e = factory.getOWLClass(property, u);

manager.addAxiom(owlOntology, factory.getOWLClassAssertionAxiom(p, person, e));

1 Ответ

0 голосов
/ 21 сентября 2018

Несколько проблем с кодом, который вы написали:

OWLOntologyManager manager=OWLManager.createOWLOntologyManager();
OWLDataFactory factory=manager.getOWLDataFactory();
String str = "urn:test:ontology";
OWLOntology owlOntology=manager.createOntology(IRI.create(str));
String prefix=str+"#";

OWLClass c1 = factory.getOWLClass( prefix ,"ClassA");
OWLClass c2 = factory.getOWLClass( prefix, "ClassB" );
OWLObjectProperty p = factory.getOWLObjectProperty( prefix, "hasProperty");
OWLObjectUnionOf u = factory.getOWLObjectUnionOf(c1, c2);
OWLClassExpression e = factory.getOWLObjectAllValuesFrom(p, u);
OWLNamedIndividual person=factory.getOWLNamedIndividual(prefix, "Person");
manager.addAxiom(owlOntology, factory.getOWLClassAssertionAxiom(e, person));
// don't forget to save the ontology
manager.saveOntology(owlOntology, ... output stream here...);
...