2011-05-26 1 views
2

Un stockage TDB est créé et divers modèles nommés y sont stockés.Existe-t-il un moyen de lister les modèles contenus dans un stockage TDB?

Est-il possible avec l'API de lister tous les modèles nommés contenus dans le TDB (donc vous pouvez en choisir un pour travailler avec) ou est-il nécessaire de connaître le nom du modèle avec lequel vous voulez travailler au préalable?

Je ne trouve rien dans la documentation APi à ce sujet (juste pour créer des modèles) ou googling.

Répondre

3

Vous pouvez le faire avec une requête SPARQL:

[/tmp] 
[email protected] $ cat > test.nq 
<http://example.org/a> <http://example.org/p> "in graph one" <http://example.org/graph/one> . 
<http://example.org/a> <http://example.org/p> "in graph two" <http://example.org/graph/two> . 
[/tmp] 
[email protected] $ mkdir tdb 
[/tmp] 
[email protected] $ tdbloader --loc=tdb test.nq 
-- Start triples data phase 
** Load empty triples table 
-- Start quads data phase 
** Load empty quads table 
Load: test.nq -- 2011/05/27 08:55:59 BST 
-- Finish triples data phase 
-- Finish quads data phase 
2 quads loaded in 0.05 seconds [Rate: 37.74 per second] 
-- Start quads index phase 
** Index GSPO->GPOS: 2 slots indexed 
** Index GSPO->GOSP: 2 slots indexed in 0.00 seconds [Rate: 2,000.00 per second] 
** Index GSPO->POSG: 2 slots indexed 
** Index GSPO->OSPG: 2 slots indexed 
** Index GSPO->SPOG: 2 slots indexed 
-- Finish quads index phase 
** 2 quads indexed in 0.01 seconds [Rate: 153.85 per second] 
-- Finish triples load 
-- Finish quads load 
** Completed: 2 quads loaded in 0.09 seconds [Rate: 23.26 per second] 
[/tmp] 
[email protected] $ tdbquery --loc=tdb "select ?g where {graph ?g {?s ?p ?o}}" 
---------------------------------- 
| g        | 
================================== 
| <http://example.org/graph/one> | 
| <http://example.org/graph/two> | 
---------------------------------- 

Modifier

Désolé, vous venez de réaliser que demandé spécifiquement pour la liste des graphes nommés de l'API. Alors, comme une alternative à ce qui précède:

String directory = "./tdb"; 
Dataset dataset = TDBFactory.createDataset(directory); 
Iterator<String> graphNames = dataset.listNames(); 
while (graphNames.hasNext()) { 
    String graphName = graphNames.next(); 
    .... 
} 
1

Cette requête SPARQL devrait fonctionner:

SELECT DISTINCT ?g WHERE { GRAPH ?g { } } 
Questions connexes