Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > Web sémantique > Frameworks
Frameworks Forum d'entraide sur les frameworks du Web sémantique (Jena, Sesame, etc.).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/08/2012, 12h23   #1
marwa_marwa
Futur Membre du Club
 
Femme
Développeur informatique
Inscription : avril 2012
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Tunisie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2012
Messages : 63
Points : 15
Points : 15
Par défaut Raisonneur et règles SWRL

Bonjour, je travaille actuellement sur une application pour laquelle j'ai crée une ontologie OWL avec protégé 2000 et qui contient des règles swrl. De plus, je viens juste de découvrir l'api JENA pour que je puisse récupérer et exécuter depuis l'ontologie ces règles. J'ai trouvé à cet égard les lignes de codes suivantes sur le net et que j'ai adapté à mon ontologie permettant d'utiliser le raisonneur pellet pour exécuter les règles swrl:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
 import java.io.InputStream;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.util.FileManager;
import com.hp.hpl.jena.reasoner.Reasoner;
import com.hp.hpl.jena.reasoner.ValidityReport;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.InfModel;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.ontology.Individual;
import com.hp.hpl.jena.ontology.ObjectProperty;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;
import java.util.Iterator;
 
import com.hp.hpl.jena.reasoner.*;
 
import org.mindswap.pellet.PelletOptions;
import org.mindswap.pellet.jena.PelletReasonerFactory;
 
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
 
import org.omg.CORBA.NameValuePair;
 
 
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
 
import org.omg.CORBA.NameValuePair;
public class ReasOnto {
 
 
    public static void main(String[] args) {
// How can I use Pellet with Jena? //
 
    	// ontology that will be used
    	String ont = "C://Program Files//Protege_3.4.6//examples//pizza//pizza.owl";
 
    	// create an empty ontology model using Pellet spec
    	OntModel model = ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC);
 
    	// read the file
    	model.read( ont );
 
    	// get the instances of a class
 
 
    	OntClass Pizza = model.getOntClass( "#Pizza" );  
 
    	Iterator instances = Pizza.listInstances();
} // fin void main
 
 
}

Le problème c'est que lorsque je lance l'exécution de de cette classe, j'obtient en retour les erreurs suivantes
Sans titre.png

Ma question est: Quelqu'un peut me rassurer si c'est le code exact pour que je puisse exploiter le fichier owl, et ensuite, exécuter les règles SWRL qu'il contient ? Si non, quelle est la bonne instruction à cette égard?

Merci d'avance et prenez en compte que je suis bloquée depuis trois semaine..; Toute information est la bienvenue s'il vous plait.
marwa_marwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 21h03   #2
CesarR
Membre habitué
 
Homme
Inscription : juillet 2005
Messages : 82
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Etats-Unis

Informations forums :
Inscription : juillet 2005
Messages : 82
Points : 105
Points : 105
Envoyer un message via MSN à CesarR
Est-ce que tu sais ce que ton code fait la?

Sinon ton message d'erreur vient pas de ta manipulation de l'ontologie ... on dirait bien qu'il te manque un jar quelque part
CesarR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 21h11   #3
marwa_marwa
Futur Membre du Club
 
Femme
Développeur informatique
Inscription : avril 2012
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Tunisie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2012
Messages : 63
Points : 15
Points : 15
merci bien pour ta réponse cesar, toutefois, c'est le seul code que j'ai trouvé sur le net pour pouvoir exécuter des règles swrl. Moi je doute de la pertinence du code.. Je trouve que c'est pas ce que je cherche et malgré ca je voulais le tenter. Y a t'il d'autres propositions de code s'il vous plait ?
marwa_marwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 21h17   #4
CesarR
Membre habitué
 
Homme
Inscription : juillet 2005
Messages : 82
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Etats-Unis

Informations forums :
Inscription : juillet 2005
Messages : 82
Points : 105
Points : 105
Envoyer un message via MSN à CesarR
Mais as tu compris ce que fait le code ici?
CesarR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 21h23   #5
marwa_marwa
Futur Membre du Club
 
Femme
Développeur informatique
Inscription : avril 2012
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Tunisie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2012
Messages : 63
Points : 15
Points : 15
Je sait très bien que ca ne répond pas à mon besoin puisque ca charge juste l'ontologie et puis liste toutes les instances de la classe Pizza.

ça manque des lignes de code surement et que j'arrive pas à les écrire
marwa_marwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 21h40   #6
CesarR
Membre habitué
 
Homme
Inscription : juillet 2005
Messages : 82
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Etats-Unis

Informations forums :
Inscription : juillet 2005
Messages : 82
Points : 105
Points : 105
Envoyer un message via MSN à CesarR
Tu as Pellet sur ta machine? dans le dossier examples tu as une source java qui te montre comment faire ...
CesarR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 21h45   #7
marwa_marwa
Futur Membre du Club
 
Femme
Développeur informatique
Inscription : avril 2012
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Tunisie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2012
Messages : 63
Points : 15
Points : 15
oui je l'ai. Tu parles de la classe RulesExample, c'est ça ? si non, vous pourriez me spécifiez la classe exacte ?
marwa_marwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 21h48   #8
CesarR
Membre habitué
 
Homme
Inscription : juillet 2005
Messages : 82
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Etats-Unis

Informations forums :
Inscription : juillet 2005
Messages : 82
Points : 105
Points : 105
Envoyer un message via MSN à CesarR
Je pensais plutot a JenaReasoner.java dont la documentation dit "An example to show how to use PelletReasoner as a Jena reasoner. "
CesarR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2012, 19h16   #9
marwa_marwa
Futur Membre du Club
 
Femme
Développeur informatique
Inscription : avril 2012
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Tunisie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2012
Messages : 63
Points : 15
Points : 15
la classe JenaReasoner.java permet juste d'afficher les superclasses avec pellet. Par contre, j'ai jeté un coup d'oeil sur la classe RulesExample.java dont le code source est:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
 
 
import org.mindswap.pellet.jena.PelletReasonerFactory;
 
import com.hp.hpl.jena.ontology.Individual;
import com.hp.hpl.jena.ontology.ObjectProperty;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;
 
/**
 * An example program that tests the DL-safe rules example from Table 3 in the
 * paper: B. Motik, U. Sattler, R. Studer. Query Answering for OWL-DL with
 * Rules. Proc. of the 3rd International Semantic Web Conference (ISWC 2004),
 * Hiroshima, Japan, November, 2004, pp. 549-563
 * 
 * @author Evren Sirin
 */
public class RulesExample {
	public static void main(String[] args) {
		String ont = "http://owldl.com/ontologies/dl-safe.owl";
 
		OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC, null );
		model.read( ont );
 
		ObjectProperty sibling = model.getObjectProperty( ont + "#sibling" );
 
		OntClass BadChild = model.getOntClass( ont + "#BadChild" );
		OntClass Child = model.getOntClass( ont + "#Child" );
 
		Individual Abel = model.getIndividual( ont + "#Abel" );
		Individual Cain = model.getIndividual( ont + "#Cain" );
		Individual Remus = model.getIndividual( ont + "#Remus" );
		Individual Romulus = model.getIndividual( ont + "#Romulus" );
 
		model.prepare();
 
		// Cain has sibling Abel due to SiblingRule
		printPropertyValues( Cain, sibling );
		// Abel has sibling Cain due to SiblingRule and rule works symmetric
		printPropertyValues( Abel, sibling );
		// Remus is not inferred to have a sibling because his father is not
		// known
		printPropertyValues( Remus, sibling );
		// No siblings for Romulus for same reasons
		printPropertyValues( Romulus, sibling );
 
		// Cain is a BadChild due to BadChildRule
		printInstances( BadChild );
		// Cain is a Child due to BadChildRule and ChildRule2
		// Oedipus is a Child due to ChildRule1 and ChildRule2 combined with the
		// unionOf type
		printInstances( Child );
	}
 
	public static void printPropertyValues(Individual ind, Property prop) {
		System.out.print( ind.getLocalName() + " has " + prop.getLocalName() + "(s): " );
		printIterator( ind.listPropertyValues( prop ) );
	}
 
	public static void printInstances(OntClass cls) {
		System.out.print( cls.getLocalName() + " instances: " );
		printIterator( cls.listInstances() );
	}
 
	public static void printIterator(ExtendedIterator i) {
		if( !i.hasNext() ) {
			System.out.print( "none" );
		}
		else {
			while( i.hasNext() ) {
				Resource val = (Resource) i.next();
				System.out.print( val.getLocalName() );
				if( i.hasNext() )
					System.out.print( ", " );
			}
		}
		System.out.println();
	}
}
Selon votre point de vue, c'est ça le code exact qui me permet d'exécuter mes règles SWRL à partir d'un programme java ? En tout cas, j'ai copié ce code dans un nouveau projet (en utilisant toujours jena) et j'ai eu une erreur dans l'importation de ce package: import org.mindswap.pellet.jena.PelletReasonerFactory;, la question est :

D' où dois je copier les fichier . jar de pellet, du dossier d'installation de protégé puisque la version que j'utilise contient par défaut le raisonneur pellet, ou du dossier de Pellet que j'ai téléchargé et qui contient les exemples que j'utilise? et quels jar dois je importer ? Merci d'avance.
marwa_marwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2013, 12h00   #10
Rihab.idoudi
Invité de passage
 
Femme
traitement d'images
Inscription : février 2013
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Tunisie

Informations professionnelles :
Activité : traitement d'images
Secteur : Enseignement

Informations forums :
Inscription : février 2013
Messages : 2
Points : 3
Points : 3
bonjour Marwa ,

Je travaille actuellement sur un projet qui porte la même problématique que la votre .

Je ne sais pas si vous avez trouvé une solution à votre problème? Si c'est le cas, pouvez-vous la partager s'il vous plaît?
Rihab.idoudi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h57.


 
 
 
 
Partenaires

Hébergement Web