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>