Написание выражения OWLObjectPropertyExpression в онтологии OWL с использованием OWL API

Я пытаюсь написать OWLObjectPropertyExpression для объекта OWL Ontology. Если бы у меня был класс OWL, я бы использовал что-то вроде следующего:

 OWLOntologyManager managerWriter = OWLManager.createOWLOntologyManager();
 OWLOntology ontoWrite=managerWriter.createOntology();
 OWLDataFactory factory = manager.getOWLDataFactory();
 managerWriter.addAxiom(ontoWrite,factory.getOWLDeclarationAxiom(factory.getOWLClass((cl.getIRI()))));

Но что я должен написать, если я хочу написать OWLObjectPropertyExpression? Заранее спасибо !.


person Discipulos    schedule 09.04.2013    source источник


Ответы (1)


Следующий фрагмент кода иллюстрирует пример использования и создания выражения OWL с использованием OWL API (взято и адаптировано из здесь):

//OWL Expression we would like to create:
//in OWL Functional syntax: ObjectIntersectionOf(A ObjectSomeValuesFrom(R B))
//in Manchester syntax: A and R some B
PrefixManager pm = new DefaultPrefixManager("http://example.org/");
OWLClass A = factory.getOWLClass(":A", pm);
OWLObjectProperty R = factory.getOWLObjectProperty(":R", pm);
OWLClass B = factory.getOWLClass(":B", pm);

//The expression
OWLClassExpression expression = 
  factory.getOWLObjectIntersectionOf(A, factory.getOWLObjectSomeValuesFrom(R, B));

//Create a class in order to use the expression
OWLClass C = factory.getOWLClass(":C", pm);

// Declare an equivalentClass axiom
//Just there to show how an example on how to use the expression
OWLAxiom definition = factory.getOWLEquivalentClassesAxiom(C, expression);
manager.addAxiom(ontology, definition);
person loopasam    schedule 09.04.2013
comment
Спасибо за ваш ответ. В моем случае я получаю объект OWLClassExpression от внешнего объекта и не знаю, что добавить в определение OWLAxiom. Какие-либо предложения ? - person Discipulos; 10.04.2013
comment
Что вы пытаетесь сделать с объектом OWLClassExpression? Обычно люди используют такие выражения в сочетании с аксиомами, как показано здесь. - person loopasam; 10.04.2013
comment
Ну, позвольте мне объяснить дальше. Я использую Hermit Reasoner в экспериментальном порядке. В резонере существует класс org.semanticweb.Hermit.structural.OWLAxioms. Я пытаюсь записать в онтологию некоторые ее поля (например, m_complexObjectPropertyExpressions). - person Discipulos; 10.04.2013
comment
хм, не уверен, что смогу помочь больше, чем с ответом, который я дал, извините :-/ - person loopasam; 10.04.2013
comment
Я просто забыл, что не могу добавить выражение в онтологию, так как оно не включено в какую-то аксиому. - person Discipulos; 11.04.2013
comment
Рад, что ты это понял :-) - person loopasam; 11.04.2013