I'm trying out TDB as a triple store. I'm not sure if this is a bug or a
misunderstanding. I have the following JUnit test code:

 

      private static String assetFN = "assetcore.owl";

      private static String locoFN = "locomotive.owl";

      private static String evolutionFN = "evolution.owl";

      private static String es44c4FN = "es44c4.owl";

 

...

      Dataset ds = null;

      File tdbDir = new File(tdbFolder);

      if (!tdbDir.exists()) {

            ds = TDBFactory.createDataset(tdbFolder);

            ds.addNamedModel(assetUri, loadModel(blueprintsFolder +
File.separator + assetFN));

            ds.addNamedModel(locoUri, loadModel(blueprintsFolder +
File.separator + locoFN));

            ds.addNamedModel(evolutionUri, loadModel(blueprintsFolder +
File.separator + evolutionFN));

            ds.addNamedModel(es44c4Uri, loadModel(blueprintsFolder +
File.separator + es44c4FN));

      }

      else {

            ds = TDBFactory.createDataset(tdbFolder);

      }

      

      Iterator<String> mniter = ds.listNames();

      while (mniter.hasNext()) {

            System.out.println("TDB repository contains model '" +
mniter.next() + "'");

      }

      ds.close();

 

When I run it the first time it works as I expected, listing the four OWL
models that I have added to the repository. However, if I run it a second
time, now that the tdbFolder exists, I get a null pointer exception in the
call to mniter.hasNext(). The Dataset (ds) created from an existing TDB
folder doesn't appear to be a valid Dataset. Am I doing something wrong?

 

The loadModel method is as follows:

 

      private OntModel loadModel(String owlFilename) throws IOException {

            OntModel model =
ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);

            OntDocumentManager docMgr = model.getDocumentManager();

            docMgr.setProcessImports(false);    // we don't want to do the
import yet, just load the model

            

            File modelFile = new File(owlFilename);

            InputStream is = new FileInputStream(modelFile); 

            BufferedReader in = new BufferedReader(new
InputStreamReader(is));

            String base = null;

            RDFReader reader = model.getReader();

            reader.read(model, is, base);

            in.close();

 

            return model;

      }

Andrew Crapo 
Information Scientist 
GE Global Research 

T +1 518 387 5729 
F +1 518 387 6104 
D *833 5729 
E [email protected] 
www.research.ge.com 

One Research Circle 
Niskayuna, NY 12309 USA 
General Electric Company 

GE imagination at work 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to