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 04/09/2012, 00h57   #1
nzaira
Invité de passage
 
Inscription : octobre 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 15
Points : 0
Points : 0
Par défaut Règles SWRL

Bonsoir tout le monde, je suis vraiment bloqué et j'ai besoin de votre aide. Je voudrais tester quelques exemples fournis dans la version de Pellet. J'ai commencé à cet égard par la classe JenaReasoner.java et ça marche trés bien déja. J'ai passé ensuite à la classe RulesExample.java dont le code est le suivant et pour laquelle j'ai crée l'ontologie OWL suivante avec une règle SWRL (la règle est très simple vu que je voulais simplifier les choses au début):
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
 
// Copyright (c) 2006 - 2008, Clark & Parsia, LLC. <http://www.clarkparsia.com>
// This source code is available under the terms of the Affero General Public License v3.
//
// Please see LICENSE.txt for full license terms, including the availability of proprietary exceptions.
// Questions, comments, or requests for clarification: licensing@clarkparsia.com
 
 
 
import org.mindswap.pellet.jena.PelletReasonerFactory;
 
import org.mindswap.pellet.PelletOptions;
 
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;
import com.hp.hpl.jena.rdf.*;
 
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.ontology.Individual;
import com.hp.hpl.jena.ontology.ObjectProperty;
 
import com.hp.hpl.jena.util.iterator.ExtendedIterator;
import com.hp.hpl.jena.reasoner.*;
 
 
import java.util.Iterator;
 
 
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
 
import org.omg.CORBA.NameValuePair;
 
/**
 * 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 BB {
	public static void main(String[] args) {
		String ont = "http://www.owl-ontologies.com/MyPizza.owl";
 
		OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC, null );
		model.read( ont );
 
		ObjectProperty hasPoids = model.getObjectProperty( ont + "#hasPoids" );
 
		// les classes //
 
		OntClass Pizza = model.getOntClass( ont + "#Pizza" );
		OntClass GrosPizza = model.getOntClass( ont + "#GrosPizza" );
		OntClass Poids = model.getOntClass( ont + "#Poids" );
 
		// les individus //
 
		Individual Pizza_1 = model.getIndividual( ont + "#Pizza_1" );
		Individual Pizza_2 = model.getIndividual( ont + "#Pizza_2" );
		Individual Poids_1 = model.getIndividual( ont + "#Poids_1" );
		Individual Poids_2 = model.getIndividual( ont + "#Poids_2" );
 
		model.prepare();
 
 
 
		// pizza1 has poids poids 1
		printPropertyValues( Pizza_1, hasPoids );
 
 
		// Jamila est tante de marwa due to est_tante_de rule
		//printPropertyValues( jamila, est_tante_de );
 
 
		printInstances( Pizza );
		printInstances( Poids );
		printInstances( GrosPizza );// ici, normalement ça m'affiche Pizza_1 grâce à la règle SWRL
 
	}
 
	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();
	}
}
Sans titre.png

Sans titre1.png

Le problème c'est que j'obtient l'erreur suivante lors de l'exécution de la classe, quelqu'un peut m'expliquer au juste c'est quoi le problème? J'en ai vraiment besoin et merci d'avance.

Sans titre2.png
nzaira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2012, 11h54   #2
Sapience
Membre chevronné
 
Avatar de Sapience
 
Homme Thomas Francart
Consultant sémantique & data à sparna.fr
Inscription : avril 2005
Messages : 191
Détails du profil
Informations personnelles :
Nom : Homme Thomas Francart
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant sémantique & data à sparna.fr
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2005
Messages : 191
Points : 685
Points : 685
Il y a un problème dans ton fichier MyPizza.owl. Il contient "&uid" qui est interprété en XML comme une entité et doit donc etre suivi d'un ";" : "&uid;"
Sapience est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2012, 14h33   #3
nzaira
Invité de passage
 
Inscription : octobre 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 15
Points : 0
Points : 0
Ouais justement spacience, j'obtiens cette erreur... Et j'ai vérifié de ce fait la consistance de mon ontologie avec Pellet, et je la trouve consistante déja . Qu'est ce que je dois faire s'il vous plait? Toute information sera la bienvenue car j'arrive pas à résoudre le problème
nzaira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2012, 23h06   #4
may.sou
Membre du Club
 
Femme
Étudiant
Inscription : janvier 2012
Messages : 61
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Tunisie

Informations professionnelles :
Activité : Étudiant
Secteur : Transports

Informations forums :
Inscription : janvier 2012
Messages : 61
Points : 47
Points : 47
j'ai testé ton code et ça marche pas j'ai le même erreur..
quelqu'un peut m'aider ? j'ai besoin de la même chose pour mon mémoire et je suis vraiment bloquée
may.sou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2012, 10h18   #5
Sapience
Membre chevronné
 
Avatar de Sapience
 
Homme Thomas Francart
Consultant sémantique & data à sparna.fr
Inscription : avril 2005
Messages : 191
Détails du profil
Informations personnelles :
Nom : Homme Thomas Francart
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant sémantique & data à sparna.fr
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2005
Messages : 191
Points : 685
Points : 685
le problème est dans la syntaxe du fichier MyPizza.owl. Postez-le ici si vous voulez plus d'aide.
Sapience est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2012, 13h25   #6
nzaira
Invité de passage
 
Inscription : octobre 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 15
Points : 0
Points : 0
Bonjour spacience, non, je pense pas que c'est à cause de la syntaxe. C'est en faite à cause de l'URL de l'ontologie. Laissez moi expliquer.. Aprés avoir exécuter le code suivant de la classe JenaReasoner.java, et qui marchait trés bien avec l'ontologie de Pizza (c'est à dire, il me vérifie la consistance de l'ontologie et m'affiche en plus les super classes du concept Country),
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
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 com.hp.hpl.jena.reasoner.*;
 
 
import java.util.Iterator;
 
 
 
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;
 
 
public class JenaReasoner {
 
 
    public static void main(String[] args) {
// How can I use Pellet with Jena? //
 /*
    	// ontology that will be used
    	//String ont = "http://www.owl-ontologies.com//pizza.owl#";
    	String ont = "http://www.co-ode.org/ontologies/pizza/2005/10/18/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();
    	*/
    	usageWithOntModel();
 
} // fin void main
 
    public static void usageWithOntModel() {    
        System.out.println("Results with OntModel");
        System.out.println("---------------------");
        System.out.println();
 
        // ontology that will be used
        String ont = "http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#";
        String ns = "http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#";
 
        // create an empty ontology model using Pellet spec
        OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC );
 
        // read the file
        model.read( ont );
 
        // print validation report
        ValidityReport report = model.validate();
        printIterator( report.getReports(), "Validation Results" );
 
        // print superclasses using the utility function
        OntClass Country = model.getOntClass( ns + "Country" );  /////////       
        printIterator(Country.listSuperClasses(), "All super classes of " + Country.getLocalName());
        // OntClass provides function to print *only* the direct subclasses 
        printIterator(Country.listSuperClasses(true), "Direct superclasses of " + Country.getLocalName());
 
        System.out.println();
    }
 
    public static void printIterator(Iterator<?> i, String header) {
        System.out.println(header);
        for(int c = 0; c < header.length(); c++)
            System.out.print("=");
        System.out.println();
 
        if(i.hasNext()) {
	        while (i.hasNext()) 
	            System.out.println( i.next() );
        }       
        else
            System.out.println("<EMPTY>");
 
        System.out.println();
    }
}
je voulais vérifier la consistance d'une ontologie que je viens de créer et que j'ai biensure sur mon disque dur (C://Program Files/Protege_3.4.6/OntologieSWRL.owl),et j'ai constaté que ça marche pas. Pourquoi? C'est tout simplement parce que si je copie l'url suivante de l'ontologie pizza ( et que j'ai trouvé dans Protégé):
http://www.co-ode.org/ontologies/piz...0/18/pizza.owl

j'obtient déja l'ontologie. Par contre, si je copie l'url de mon ontologie (OntologieSWRL.owl que protégé me fournisse, comme le montre la capture d'écran suivante), j'obtient un 404 not found. C'est alors à cause de l'url que le code ne marche pas. Le meme principe s'applique pour le code de la classe BB que j'ai posté en haut.
Sans titre.png


Et comme vous m'avez répondu dans : http://www.developpez.net/forums/d12...r-pellet-jena/

il me faut exactement une ou deux lignes de codes pour que je puisse travailler sur l'ontologie que j'ai sur mon disque. J'ai déja essayé de faire ceci comme vous me l'avez recommandé :

"file://C://Program Files//Protege_3.4.6//examples//pizza//pizza.owl"
et ca marche pas malheureusement Il ya surement quelques autres lignes de codes qui manquent pour pouvoir utiliser file. Je serais trés reconnaissant si vous pourriez me les rapportez. Et merci d'avance

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
84
85
86
87
88
89
 
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 com.hp.hpl.jena.reasoner.*;
 
 
import java.util.Iterator;
 
 
 
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;
 
 
public class AA {
 
 
    public static void main(String[] args) {
// How can I use Pellet with Jena? //
 
    	usageWithOntModel();
 
} // fin void main
 
    public static void usageWithOntModel() {    
        System.out.println("Results with OntModel");
        System.out.println("---------------------");
        System.out.println();
 
        // ontology that will be used
 
        File f = new File("C:/Program Files/Protege_3.4.6/examples/pizza/pizza.owl");
        model.read(new FileInputStream(f));
 
        // create an empty ontology model using Pellet spec
        OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC );
 
        // read the file
      //  model.read( ont );
 
        // print validation report
        ValidityReport report = model.validate();
        printIterator( report.getReports(), "Validation Results" );
 
        // print superclasses using the utility function
        OntClass Country = model.getOntClass("Country" );  /////////       
        printIterator(Country.listSuperClasses(), "All super classes of " + Country.getLocalName());
        // OntClass provides function to print *only* the direct subclasses 
        printIterator(Country.listSuperClasses(true), "Direct superclasses of " + Country.getLocalName());
 
        System.out.println();
    }
 
    public static void printIterator(Iterator<?> i, String header) {
        System.out.println(header);
        for(int c = 0; c < header.length(); c++)
            System.out.print("=");
        System.out.println();
 
        if(i.hasNext()) {
	        while (i.hasNext()) 
	            System.out.println( i.next() );
        }       
        else
            System.out.println("<EMPTY>");
 
        System.out.println();
    }
}
nzaira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 23h10   #7
Sapience
Membre chevronné
 
Avatar de Sapience
 
Homme Thomas Francart
Consultant sémantique & data à sparna.fr
Inscription : avril 2005
Messages : 191
Détails du profil
Informations personnelles :
Nom : Homme Thomas Francart
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant sémantique & data à sparna.fr
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2005
Messages : 191
Points : 685
Points : 685
Tout cela est un peu confus.
Je te confirme que l'erreur initiale dans le premier message que tu as posté est une erreur de syntaxe du fichier référencé par l'URL
"http://www.owl-ontologies.com/MyPizza.owl". En effet le nom de domaine "www.owl-ontologies.com" n'existe plus et renvoie vers une page de pub, normal que Jena n'arrive pas à parser cette ontologie...

Si tu veux charger un fichier d'ontologie qui est sur ton disque dans un Model Jena/Pellet, utilise ce code :

Code :
1
2
OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC, null );
model.read( new FileInputStream(new File("C:/chemin/vers/le/fichier/a/charger/pizza.owl")), RDF.getURI() );
Bon courage
Sapience 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 10h54.


 
 
 
 
Partenaires

Hébergement Web