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 :

Raisonneur et règles SWRL


Sujet :

Frameworks

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 66
    Points : 51
    Points
    51
    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 : 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
     
     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
    Nom : Sans titre.png
Affichages : 631
Taille : 42,1 Ko

    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.

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Points : 134
    Points
    134
    Par défaut
    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

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 66
    Points : 51
    Points
    51
    Par défaut
    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 ?

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Points : 134
    Points
    134
    Par défaut
    Mais as tu compris ce que fait le code ici?

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 66
    Points : 51
    Points
    51
    Par défaut
    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

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Points : 134
    Points
    134
    Par défaut
    Tu as Pellet sur ta machine? dans le dossier examples tu as une source java qui te montre comment faire ...

  7. #7
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 66
    Points : 51
    Points
    51
    Par défaut
    oui je l'ai. Tu parles de la classe RulesExample, c'est ça ? si non, vous pourriez me spécifiez la classe exacte ?

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Points : 134
    Points
    134
    Par défaut
    Je pensais plutot a JenaReasoner.java dont la documentation dit "An example to show how to use PelletReasoner as a Jena reasoner. "

  9. #9
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 66
    Points : 51
    Points
    51
    Par défaut
    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 : 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
     
     
    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.

  10. #10
    Futur Membre du Club
    Femme Profil pro
    traitement d'images
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    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?

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