IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Frameworks Discussion :

Règles SWRL


Sujet :

Frameworks

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 10
    Points
    10
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
    	}
    }
    Nom : Sans titre.png
Affichages : 300
Taille : 40,5 Ko

    Nom : Sans titre1.png
Affichages : 232
Taille : 54,5 Ko

    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.

    Nom : Sans titre2.png
Affichages : 239
Taille : 102,0 Ko

  2. #2
    Membre éprouvé
    Avatar de Sapience
    Homme Profil pro
    Consultant sémantique & data à sparna.fr
    Inscrit en
    Avril 2005
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 305
    Points : 915
    Points
    915
    Par défaut
    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;"

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    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

  4. #4
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    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 : 79
    Points
    79
    Par défaut
    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

  5. #5
    Membre éprouvé
    Avatar de Sapience
    Homme Profil pro
    Consultant sémantique & data à sparna.fr
    Inscrit en
    Avril 2005
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 305
    Points : 915
    Points
    915
    Par défaut
    le problème est dans la syntaxe du fichier MyPizza.owl. Postez-le ici si vous voulez plus d'aide.

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Nom : Sans titre.png
Affichages : 251
Taille : 69,6 Ko


    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
        }
    }

  7. #7
    Membre éprouvé
    Avatar de Sapience
    Homme Profil pro
    Consultant sémantique & data à sparna.fr
    Inscrit en
    Avril 2005
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 305
    Points : 915
    Points
    915
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

Discussions similaires

  1. [Protégé] Protégé 4.1 et règles SWRL
    Par araqh dans le forum Ontologies
    Réponses: 13
    Dernier message: 02/01/2013, 17h11
  2. règles SWRL +ontologie +fichier OWL
    Par Etudiante_Ines dans le forum Général Java
    Réponses: 1
    Dernier message: 28/12/2012, 15h09
  3. [Protégé] Exemple de règle SWRL
    Par marwa_marwa dans le forum Ontologies
    Réponses: 0
    Dernier message: 07/06/2012, 23h21
  4. [Protégé] Génération de règles SWRL
    Par Mmeouerghemmi dans le forum Ontologies
    Réponses: 3
    Dernier message: 24/05/2012, 15h19
  5. Graphe de dépendance des règles SWRL
    Par Etudiante_Ines dans le forum Web sémantique
    Réponses: 0
    Dernier message: 08/05/2012, 16h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo