Bonjour à tous,

Je travaille actuellement sur le développement d'un système à base de règles SWRL et d'une ontologie OWL.
Je développe le système et je test actuellement les librairies SQWRL afin de pouvoir exécuter mes règles (dans mon fichier .owl) dans mon système.

Pour simplifier, j'ai une classe Environment, qui possède une propriété hasSituation, avec pour range une Situation.
J'ai une règle (toute simple, juste pour le test), qui set la valeur de la propriété hasSituation du seul environnement que j'ai dans mon ontologie

Environment(?e) -> hasSituation(?e,DangerousSituation)

DangerousSituation étant un individual de la classe Situation.

J'execute la règle comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
SQWRLQueryEngine queryEngine = SQWRLQueryEngineFactory.create(owlModel);
SQWRLResult result = queryEngine.runSQWRLQuery("rule1");
Le résultat de la requête me donne bien l'individual d'Environnement que j'ai créé auparavant.

Le problème est que lorsque j'interroge la valeur de hasSituation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
OWLIndividual environnement = clsEnvironnement.createOWLIndividual("environnement");
Collection<OWLProperty> properties = owlModel.getUserDefinedOWLProperties();
[...]
OWLProperty situation = null;
			for (Iterator it = properties.iterator(); it.hasNext();) {
			    OWLProperty property = (OWLProperty) it.next();
			    if(property.getBrowserText().equals("hasSituation"))
			    	situation=property;
			}
environnement.getPropertyValues(situation);
La valeur est égale à null.

Je dois certainement rater quelque chose, mais je ne vois pas quoi...


Par avance, merci !