j'ai crée un ontologie qui contient les classes suivantes:
States, qui est sous classe de countries
Towns, Cyties, Villages, qui sont sous classe de States
aussi j'ai créé des instances qui sont:
Germany instance de countries
Saarlind et Berlin instance de States
STUTTGART instance de Cyties
Je cherche à entrer deux mot par exemple mot 1 : "germany" et mot 2 : "STUTTGART "
et si mot 1= mot 2 ok sinon je cherche si mot 1 est une sous classe de mot 2 pour cela j'utilise le code java suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
private static boolean getChildrenClass(String LocRequest,String LocServic)
{
Iterator iterClass = null;
NodeIterator iter = null;
OntClass ontClass = null;
String inOntology="http://127.0.0.1/ontology/Countries.owl#";//geographydataset.owl#;
OntModel model = ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC);
model.read(inOntology);
resource = model.getResource(ontology+ LocServic);//LocRequest);
iter = model.listObjectsOfProperty(resource, OWL.equivalentClass);
System.out.println("read onto = "+iter.next().toString());
while (iter.hasNext())
{
if (LocRequest.equals(iter.next().toString()))
{
return true;
}
}
return false;
} |
Malheureusement, lors de l'exécution, la boucle while n'est jamais atteinte.
Merci d'avance.
Partager