2013-02-14 3 views
-1

Когда я делаю это, он не работаетReasoner не вернувшиеся экземпляры

OWLClassExpression query = factory.getOWLObjectIntersectionOf(factory.getOWLClass("#belgique", pm)) 

reasoner.getInstances (запрос, правда);

это один работает:

reasoner.getInstances(factory.getOWLClass("#belgique", pm),true); 

Но дело в том, что мне нужно objectintersectionof, потому что мне нужны экземпляры, которые имеют несколько типов классов

Я даже попытался это:

OWLClass newName = factory.getOWLClass(IRI.create("temp001")); 
OWLAxiom definition = factory.getOWLEquivalentClassesAxiom(newName, query); 
manager.addAxiom(ontology, definition); 
reasoner.getInstances(newName,true) 

его все еще не работает

ответ

0

getOWLObjectIntersectionOf - способ создания более сложных выражений класса, метод утверждает отношения между входными выражениями, он обычно не используется отдельно, как это (see there for backgroud).

Пример: Mother = ObjectIntersectionOf(Woman, Parent) Mother здесь определяется как то, что является WomanиParent. и - это пересечение объектов.

Вам не нужно использовать его для извлечения экземпляров класса. В вашем случае использование getOWLClass() должно выполнить эту работу.

+0

Предположим, я хочу получить все экземпляры, которые («Человек» И «Женщина» и «Родитель»), как мне это сделать с помощью getOWLClass() ?, getOWLClass возвращает мне класс, мне нужны экземпляры пересечения класса – Noor

+0

Затем вам нужно создать первое выражение класса OWL «Person and Woman and Parent», для этого вы можете использовать getOWLObjectIntersectionOf. Вы указываете в качестве параметров OWLClasses (здесь объекты OWLClass), разделенные запятой. – loopasam

+0

да, это то, что я сделал, но когда я передаю его аргументу, чтобы получить экземпляры, его возвращающий пустой набор – Noor

Смежные вопросы