2016-09-10 10 views
0

Ich habe in der Eingabe N + 1 Elemente, wobei N Rolle/OWLObjectProperty und das letzte ist ein Konzept/OWLClass. Das Problem ist, dass ich eine OWLClassExpression wie diese zu erzeugen, wobei der Eingang unter Berücksichtigung (a, b, C):OWLAPI rekursive Axiome

OWLClassExpression axiom = factory.getOWLObjectSomeValuesFrom( factory.getOWLObjectProperty("#a") , factory.getOWLObjectSomeValuesFrom(factory.getOWLObjectProperty("#b", C)); 

Dies ist einfach, weil ich nur zwei Rollen haben, aber ich brauche eine allgemeine Lösung für N Rollen, da ich die Eingabe des Benutzers nicht vorhersagen kann. Das Axiom wird geschachtelt sein, aber ich weiß nicht, ob es möglich ist, eine solche Struktur zu bauen.

Antwort

0

Es ist möglich - Sie können C durch einen Methodenaufruf ersetzen, der Ihren Ausdruck rekursiv aufbaut, oder Sie können ihn auf eine Liste reduzieren. Z. B. eine Liste von Eigenschaften, die Sie in umgekehrter Reihenfolge durchlaufen, beginnend mit dem axiomatischen Hebel (C) und das zuvor erstellte Objekt in einen neuen Klassenausdruck einwickeln.

Allerdings hat die Eule api keine Dienstprogrammklasse, um dies zu tun, Sie müssen es von Grund auf neu programmieren.