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 :

[TDB] Problème de lecture d'un graphe : "Quad: object cannot be null" [Jena]


Sujet :

Frameworks

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [TDB] Problème de lecture d'un graphe : "Quad: object cannot be null"
    Bonjour,

    Je débute avec TDB, et j'ai quelques problèmes pour trouver de la documentation et des exemples.
    Mon ontologie est très simple, doit permettre de stocker n'importe quelle donnée. Pour l'instant, je n'utilise qu'une propriété, "http://tuplesProperties#hasName".
    Dans un premier temps, j'écris les données de mon modèle :
    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
    public static void main(String[] args) {
     
    		String directory = "TDB/" ;
    		// create an empty Model
    		Dataset dataset = TDBFactory.createDataset(directory);
    		Model m = ModelFactory.createDefaultModel();
     
    		String uri = "http://tuplesProperties#";
    		Property hn = m.createProperty(uri, "hasName");
     
    		Resource res = m.createResource("http://myResource");
    		m.add(res, hn, "myResource");
     
    		String nomModele = "http://modele";
    		dataset.addNamedModel(nomModele, m);
    		m.close();
    		dataset.close();
    	}
    Dans un second temps, je souhaite les lire :
    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
    public static void main(String[] args) {
     
    		String directory = "TDB/" ;
    		Dataset dataset = TDBFactory.createDataset(directory);
     
    		String nom = "http://modele";
    		Model m = dataset.getNamedModel(nom);
     
    		String uri = "http://tuplesProperties#";
    		Property hn = m.createProperty(uri, "hasName");
     
    //On vérifie si la propriété est dans le modèle
    		System.out.println("La propriété existe bien dans le modèle : " + m.contains(null, hn));
     
    		String nomRes = "http://myResource";
    		Resource res = m.getResource(nomRes);
    		System.out.println("La ressource demandée est " + res.toString());
    		System.out.println("La ressource " + res.toString() + " a un object d'après la propriété " + hn.toString() + " : " + m.contains(res, hn));
     
    //On liste les objects de la relation hasName
    		StmtIterator iterElts = res.listProperties(hn);
    		while (iterElts.hasNext()) {
    			Statement stat = iterElts.nextStatement();
    			System.out.println(stat.getProperty(hn).getString());
    		}
     
    		m.close();
    	}
    Et j'obtiens ces résultats-là :
    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
    La propriété existe bien dans le modèle : true
    La ressource demandée est http://myResource
    La ressource http://myResource a un object d'après la propriété http://tuplesProperties#hasName : true
    Exception in thread "main" java.lang.UnsupportedOperationException: Quad: object cannot be null
    	at com.hp.hpl.jena.sparql.core.Quad.<init>(Quad.java:62)
    	at com.hp.hpl.jena.tdb.lib.TupleLib.quad(TupleLib.java:164)
    	at com.hp.hpl.jena.tdb.lib.TupleLib.quad(TupleLib.java:155)
    	at com.hp.hpl.jena.tdb.lib.TupleLib.access$100(TupleLib.java:45)
    	at com.hp.hpl.jena.tdb.lib.TupleLib$4.convert(TupleLib.java:89)
    	at com.hp.hpl.jena.tdb.lib.TupleLib$4.convert(TupleLib.java:85)
    	at org.openjena.atlas.iterator.Iter$4.next(Iter.java:293)
    	at com.hp.hpl.jena.tdb.store.GraphTDBBase$ProjectQuadsToTriples.next(GraphTDBBase.java:195)
    	at com.hp.hpl.jena.tdb.store.GraphTDBBase$ProjectQuadsToTriples.next(GraphTDBBase.java:183)
    	at com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:80)
    	at com.hp.hpl.jena.util.iterator.Map1Iterator.next(Map1Iterator.java:47)
    	at com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:80)
    	at com.hp.hpl.jena.rdf.model.impl.StmtIteratorImpl.next(StmtIteratorImpl.java:45)
    	at com.hp.hpl.jena.rdf.model.impl.StmtIteratorImpl.nextStatement(StmtIteratorImpl.java:55)
    	at jena.tests.TDBTestRead.main(TDBTestRead.java:60)
    Et la ligne 60 est cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Statement stat = iterElts.nextStatement();
    Je ne comprends pas pourquoi je ne peux pas récupérer mes données, sachant qu'il m'indique qu'il y a bien des éléments objets de la propriété "hasName".

    Que signifie l'erreur "Quad: object cannot be null" ? Qu'est-ce qu'un "quad" d'ailleurs ?

    Merci pour votre aide
    Lauriane
    Dernière modification par Invité ; 27/06/2012 à 14h36.

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

Discussions similaires

  1. [TFileStream] Problème de lecture de string
    Par Pedro dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2004, 13h06
  2. [DirectShow] problème lorsque je détruit mon graphe
    Par juldjin2 dans le forum DirectX
    Réponses: 1
    Dernier message: 04/02/2004, 21h30
  3. problème de lecture base de registre
    Par pafounet3 dans le forum MFC
    Réponses: 10
    Dernier message: 31/12/2003, 14h06
  4. [fread] Problème de lecture de buffer
    Par karl3i dans le forum C
    Réponses: 2
    Dernier message: 25/09/2003, 09h21
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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