On 11/04/12 14:58, Emilio Miguelanez wrote:
Hi,
How can I get the prefixes from the TDB store using latest tdb version 0.9.0?
Previously, using version 0.8.10, I managed to get the prefixes using the
following code
Model bModel = TDBFactory.createModel(repoDir);
OntModel aModel = ModelFactory.createOntologyModel(spec, bModel);
Map<String, String> prefixMap = new HashMap<String, String>();
prefixMap = aModel.getNsPrefixMap();
Now, with the latest version and in order to support transactions, the code has
changed to:
Dataset aDataset = TDBFactory.createDataset(repoDir);
Map<String, String> prefixMap = new HashMap<String, String>();
Model model = dataset.getDefaultModel();
prefixMap = model.getNsPrefixMap();
but it doesn't retrieve all prefixes from the model.
Should I use a different method or API to retrieve the prefixes stored in the
tdb?
Cheers,
Emilio
Hi there,
There is a problem with the bulkloader (see JIRA JENA-175).
Could you look in the DB directory and see if the prefixes.dat is zero
or not?
I tried the code below and (on a disk-backed database) and it printed
the prefixes:
Andy
-----------------------------
package dev;
import java.util.Map ;
import org.openjena.atlas.lib.FileOps ;
import org.openjena.riot.SysRIOT ;
import com.hp.hpl.jena.query.Dataset ;
import com.hp.hpl.jena.query.DatasetFactory ;
import com.hp.hpl.jena.query.ReadWrite ;
import com.hp.hpl.jena.shared.PrefixMapping ;
import com.hp.hpl.jena.sparql.core.DatasetGraph ;
import com.hp.hpl.jena.sparql.core.DatasetPrefixStorage ;
import com.hp.hpl.jena.tdb.TDB ;
import com.hp.hpl.jena.tdb.TDBFactory ;
import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
import com.hp.hpl.jena.tdb.sys.DatasetControlNone ;
import com.hp.hpl.jena.tdb.sys.SetupTDB ;
import com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction ;
import com.hp.hpl.jena.util.FileManager ;
public class Jena_TDB_prefixes
{
public static void main(String ... argv)
{
FileOps.clearDirectory("DB") ;
SysRIOT.wireIntoJena() ;
DatasetGraphTransaction dsg =
(DatasetGraphTransaction)TDBFactory.createDatasetGraph("DB") ;
Dataset ds = DatasetFactory.create(dsg) ;
ds.begin(ReadWrite.WRITE) ;
FileManager.get().readModel(ds.getDefaultModel(), "D.ttl") ;
ds.commit() ;
ds.end() ;
System.out.println("Prefixes (DS):") ;
DatasetPrefixStorage prefixes =
SetupTDB.makePrefixes(dsg.getLocation(), new DatasetControlNone()) ;
for ( String gn : prefixes.graphNames() )
{
System.out.println("Graph: "+gn) ;
PrefixMapping pmap = prefixes.getPrefixMapping(gn) ;
Map<String, String> x = pmap.getNsPrefixMap() ;
for ( String k : x.keySet() )
System.out.printf(" %-10s %s\n", k+":", x.get(k)) ;
}
System.out.println("Prefixes (dft model):") ;
ds.begin(ReadWrite.READ) ;
Map<String, String> mapping = ds.getDefaultModel().getNsPrefixMap() ;
System.out.println(mapping) ;
ds.end() ;
}
}
-----------------------------
---- D.ttl
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix ns: <http://example.org/ns#> .
@prefix : <http://example.org/book/> .
:s :p :o .