OK - thanks. I wasn't sure whether the default model was automatically created 
when a new TDB dataset is created.

-----Original Message-----
From: Andy Seaborne [mailto:[email protected]] 
Sent: Thursday, January 16, 2014 1:16 PM
To: [email protected]
Subject: Re: Another Problem: can't set default graph

On 16/01/14 17:55, Ed Swing wrote:
> Onto another problem...
>
>          File dir = new File(baseDir + "/" + projName);
>          if (!dir.exists()) {
>              dir.mkdirs();
>              Dataset dataset =
>                  TDBFactory.createDataset(baseDir + "/" + projName);

The dataset now exists.

>              dataset.begin(ReadWrite.WRITE);
>              OntModel project =
>                  ModelFactory
>                      .createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF);
>              model.setNsPrefix("", SemanticStoreService.BASE_URI + projName
>                  + "/");
>              dataset.setDefaultModel(project);

Same issue - a dataset in TDB is not something you flip graphs on - they have 
to be copied in and out because they are bytes on disk (+caching).

The default graph is already there.  You need to add to it.

dataset.getDefaultModel().add(project);

>
> throws the following exception:
> Exception in thread "main" java.lang.UnsupportedOperationException: Can't set 
> default graph via GraphStore on a TDB-backed dataset
>         at 
> com.hp.hpl.jena.tdb.store.DatasetGraphTDB.setDefaultGraph(DatasetGraphTDB.java:314)
>         at 
> com.hp.hpl.jena.sparql.core.DatasetGraphTrackActive.setDefaultGraph(DatasetGraphTrackActive.java:115)
>         at 
> com.hp.hpl.jena.sparql.core.DatasetImpl.setDefaultModel(DatasetImpl.java:215)
>         at 
> com.sas.store.service.SemanticStoreService.createProject(SemanticStore
> Service.java:203)
>
> I'm not sure what's going on here. How would you set the default graph of a 
> newly created dataset? Note that this code is for the case when the dataset 
> does not exist yet.
>
> On a side note, it might be nice to add a method for 
> TDBFactory.createDataset(File dir)...

Fore now, you can use:
TDBFactory.createDataset(dir.getAbsolutePath()) ;

>
>
> Edward Swing
> Applied Research Technologist
> Vision Systems + Technology, Inc., a SAS Company
> 6021 University Boulevard * Suite 360 * Ellicott City * Maryland * 
> 21043
> Tel: 410.418.5555 Ext: 919 * Fax: 410.418.8580
> Email: [email protected]<mailto:[email protected]>
> Web: http://www.vsticorp.com<http://www.vsticorp.com/>
>
>



Reply via email to