Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Discussion: Règles SWRL

  1. #1
    Invité de passage
    Inscrit en
    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

  2. #2
    Membre chevronné
    Avatar de Sapience
    Homme Profil pro Thomas Francart
    Consultant sémantique & data à sparna.fr
    Inscrit en
    avril 2005
    Messages
    231
    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 : 231
    Points : 772
    Points
    772

    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
    Invité de passage
    Inscrit en
    octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 15
    Points : 0
    Points
    0

    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 du Club
    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 : 47
    Points
    47

    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 chevronné
    Avatar de Sapience
    Homme Profil pro Thomas Francart
    Consultant sémantique & data à sparna.fr
    Inscrit en
    avril 2005
    Messages
    231
    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 : 231
    Points : 772
    Points
    772

    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
    Invité de passage
    Inscrit en
    octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 15
    Points : 0
    Points
    0

    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 :
    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();
        }
    }

  7. #7
    Membre chevronné
    Avatar de Sapience
    Homme Profil pro Thomas Francart
    Consultant sémantique & data à sparna.fr
    Inscrit en
    avril 2005
    Messages
    231
    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 : 231
    Points : 772
    Points
    772

    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 :
    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •