2015-09-06 1 views
0

S'il vous plaît, je veux analyser l'ontologie suivante avec le programme Java en utilisant OWLAPI.Comment faire pour obtenir l'ensemble des individus de la propriété d'objet avec OWLAPI

<ObjectPropertyAssertion> 
     <ObjectProperty IRI="http://onto1#creator"/> 
     <NamedIndividual IRI="Mark1"/> 
     <NamedIndividual IRI="Car1"/> 
    </ObjectPropertyAssertion> 
    <ObjectPropertyAssertion> 
     <ObjectProperty IRI="http://onto1#creator"/> 
     <NamedIndividual IRI="Mark2"/> 
     <NamedIndividual IRI="Car2"/> 
    </ObjectPropertyAssertion> 

La sortie:

  • Mark1 -> Car1
  • Mark2 -> voiture2

Nous vous remercions d'avance pour votre aide

Répondre

2

Vous devez d'abord extraire les individus dans votre ontologie, puis demander OWL API pour trouver les valeurs de l'objet propriétés attribuées à ces personnes:

Set<OWLNamedIndividual> inds=localOntology.getIndividualsInSignature(); 
    for (OWLNamedIndividual ind: inds){ 
     System.out.println(ind.getObjectPropertyValues(localOntology)); 
    } 
+0

Merci beaucoup. – khiat

+0

Pour OWLAPI version 4, vérifiez EntitySearcher - de nombreuses méthodes déclarées dans OWLEntity y ont été déplacées. – Ignazio

+0

Salut! Existe-t-il un moyen rapide de conserver l'individu en fonction de son DataProperty dans l'API OWL? Par exemple, si je veux conserver un individu qui est inconnu pour moi, mais je sais qu'il devrait avoir le DataProperty (disons orderNumber = 1). Je pense que parcourir through Set inds prend plus de temps. – Fabi

0

Vous pouvez également utiliser un OWLDataFactory comme

OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); 
OWLDataFactory factory = manager.getDataFactory(); 
Set<OWLNamedIndividual> inds = localOntology.getIndividualsInSignature(); 
    for (OWLNamedIndividual ind: inds){ 
     System.out.println(ind.getObjectPropertyValues(factory.getOWLObjectProperty(IRI.create("Put the iri of the property here")), localOntology)); 
    } 

Bien garder à l'esprit System.out.println(ind.getObjectPropertyValues(factory.getOWLObjectProperty(IRI.create("Put the iri of the property here")), localOntology)); retourne une Set<OWLIndividual>
Ceci a l'avantage de chercher exactement la propriété que vous voulez utiliser par opposition à toutes les propriétés sur un individu particulier.

+0

Merci beaucoup, oui j'ai utilisé cette solution car elle renvoie un ensemble d'individus d'une propriété d'objet spécifique. – khiat