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 :

Instancier une ontologie [Jena]


Sujet :

Frameworks

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Points : 106
    Points
    106
    Par défaut Instancier une ontologie
    Bonjour
    j'ai une ontologie que je doit instancier de manière automatique et pour cela j'utilise l'API jena, mon probléme est que j'ai une exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException
    voici la représentation de mon ontologie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Thing |
    <div style="margin-left:40px">|-> Humain</div><div style="margin-left:40px"><div style="margin-left:40px">|->Personne</div></div><div style="margin-left:40px">|->Maison</div>
    avec les propriétés suivantes :
    Personne -> aPourNom -> nom
    Personne -> aPourAge  -> age
     
    Humain -> aPourMaison-> Maison
     
    Maison -> aPourNumero -> numero
    Maison -> aPourVoie     -> voie
    Maison -> aPourId        -> id

    et voici le code java qui pose problème
    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
    OntModel modele = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RDFS_INF);
    		try 
    		{
    			InputStream reader = new FileInputStream(PATH_ONTOLOGY);
    			modele.read(reader,"","RDF/XML");
                            OntClass classePersonne = modele.getOntClass(URI + "Personne");
    			OntClass classeMaison 	  = modele.getOntClass(URI + "Maison");
    
                            OntProperty nomProperty     = modele.getOntProperty(URI + "aPourNom");
                          
    			OntProperty numeroVoieProperty     = modele.getOntProperty(URI + "aPourNumero");
    			OntProperty codePostalProperty	= modele.getOntProperty(URI + "aPourVoie");
    			OntProperty villeProperty		= modele.getOntProperty(URI + "aPourId");
    
                            ObjectProperty adresseProperty  = modele.getObjectProperty("URI" + "aPourMaison");
    			adresseProperty.setDomain(classePersonne);
    			adresseProperty.setRange(classeMaison);
    
                            //Literal concernant nom de la personne
                            Literal nomLiteral 			= modele.createTypedLiteral(nom);
    			
                            //Literal concernant l'adresse
    			Literal numeroVoieLiteral	= modele.createTypedLiteral(numeroVoie);
                       	Literal nomVoieLiteral		= modele.createLiteral(nomVoie);
    			Literal idLiteral	=         modele.createTypedLiteral(id);
    
                            String individuMaison = URI+"Maison"+nom;
    			String individuPersonne = URI +"Personne"+ nom;
    			
    			modele.createIndividual(individuPersonne, classePersonne);
    			modele.getIndividual(individuPersonne).setPropertyValue(nomProperty, nomLiteral);
    			
    			modele.createIndividual(individuMaison, classeMaison);
    			modele.getIndividual(individuMaison).setPropertyValue(nomVoieProperty, nomVoieLiteral);
    			modele.getIndividual(individuMaison).setPropertyValue(numeroVoieProperty, numeroVoieLiteral );
    			modele.getIndividual(individuMaison).setPropertyValue(idProperty, idLiteral);
    
    			
    			modele.write(new FileOutputStream(PATH_ONTOLOGY));
    			modele.close();
    } 
    		catch (FileNotFoundException e) 
    		{
    			e.printStackTrace();
    		}

    l'instanciation d'une personne ou d'une maison marche (donc URI + noms propriétés ...etc sont bons), le problème survient quand je crée l'ObjecteProperty "aPourMaison" pourtant en ouverant le fichier Owl la représentation me semble correcte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <!-- http://www.my-site.com/Ontology.owl#aPourMaison -->
     
        <owl:ObjectProperty rdf:about="&Ontology;aPourMaison">
            <rdfs:range rdf:resource="&Ontology;Maison"/>
            <rdfs:domain rdf:resource="&Ontology;Personne"/>
        </owl:ObjectProperty>

  2. #2
    Rédacteur/Modérateur
    Avatar de Metafire18
    Homme Profil pro
    Ingénieur de recherche Orange Labs
    Inscrit en
    Décembre 2007
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur de recherche Orange Labs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 777
    Points : 1 894
    Points
    1 894
    Billets dans le blog
    1
    Par défaut
    L'exception se déclenche au moment où tu fixes le domaine de la propriété aPourMaison, c'est bien ça?
    Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Points : 106
    Points
    106
    Par défaut
    hello
    l'exception se déclenche lors de l'appel de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adresseProperty.setDomain(classePersonne);
    j'ai trouvé la cause, il y a deux erreurs :
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modele.getObjectProperty(URI + "aPourMaison"); non modele.getObjectProperty("URI" + "aPourMaison");
    2) il faut pas appeler cette méthode vu que c'est déjà existant dans le fichier owl.

    Afin de relier deux classes il faut juste crée deux individu et puis les reliées avec un Statement de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //Creation individu
    Individual individualPersonne = classPersonne.createIndividual(individuPersonne); 
    Individual individualMaison    = classMaison.createIndividual(individuMaison);  
     
    //Recuperation objectProperty du fichier Owl
    ObjectProperty adresseProperty  = modele.getObjectProperty(URI + "aPourMaison");
     
    Statement statement_Personne_Maison = modele.createStatement(individualPersonne, adresseProperty, individualMaison);
    modele.add(statement_Personne_Maison);
    it's run fine

  4. #4
    Rédacteur/Modérateur
    Avatar de Metafire18
    Homme Profil pro
    Ingénieur de recherche Orange Labs
    Inscrit en
    Décembre 2007
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur de recherche Orange Labs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 777
    Points : 1 894
    Points
    1 894
    Billets dans le blog
    1
    Par défaut
    Parfait!

    Au passage, pour rrelier des instances entre elles, tu peux également utiliser la méthode setPropertyValue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Individual individualPersonne = classPersonne.createIndividual(individuPersonne);  
    Individual individualMaison    = classMaison.createIndividual(individuMaison); 
    ObjectProperty adresseProperty  = modele.getObjectProperty(URI + "aPourMaison"); 
    individualPersonne.setPropertyValue(adresseProperty,individualMaison);
    Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Points : 106
    Points
    106
    Par défaut
    Merci pour l'information

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Instanciation d'une ontologie a partir d'une liste
    Par Assoumarh dans le forum Ontologies
    Réponses: 0
    Dernier message: 08/09/2014, 17h34
  2. [Jena] Instancier (peupler) une ontologie à partir de MySQL
    Par houda8086 dans le forum Frameworks
    Réponses: 0
    Dernier message: 23/03/2014, 10h57
  3. [Jena] Instancier une ontologie
    Par BIREFKOUN dans le forum Frameworks
    Réponses: 2
    Dernier message: 05/02/2013, 09h07
  4. [JAR] instancier une Image contenue dans un jar
    Par celine31 dans le forum Général Java
    Réponses: 3
    Dernier message: 03/04/2005, 15h55
  5. [Débutant(e)]servlet qui instancie une classe personelle
    Par NiBicUs dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 08/02/2005, 12h00

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