Hello all,
I am using the Jena API version 2.6.4, in Ubuntu 11.04.
I am trying to load an OWL ontology that imports other N3 files. Here
is the method I have written to do this:
public static OntModel loadModelWithImports(String file, String uri,
String lang) {
Model baseModel =
ModelFactory.createDefaultModel(ReificationStyle.Minimal);
InputStream input = FileManager.get().open(file);
baseModel.read(input, uri, lang);
return ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM,
baseModel);
}
I call the method as follows:
OntModel infModel =
ModelLoader.loadModelWithImports("/home/ontologies/my_ontology.n3",
null, "N3");
When I try to use this method, however, I get errors such as the
following, for each file imported in my_ontology.n3 :
*****************************************
ERROR [main] (RDFDefaultErrorHandler.java:44) -
http://localhost/tmp/repress.n3(line 1 column 1): Content is not
allowed in prolog.
WARN [main] (OntDocumentManager.java:1078) - An error occurred while
attempting to read from http://localhost/tmp/import.n3. Msg was
'org.xml.sax.SAXParseException; systemId:
http://localhost/tmp/import.n3; lineNumber: 1; columnNumber: 1;
Content is not allowed in prolog.'.
com.hp.hpl.jena.shared.JenaException: org.xml.sax.SAXParseException;
systemId: http://localhost/tmp/import.n3; lineNumber: 1; columnNumber:
1; Content is not allowed in prolog.
at
com.hp.hpl.jena.rdf.model.impl.RDFDefaultErrorHandler.fatalError(RDFDefaultErrorHandler.java:45)
at
com.hp.hpl.jena.rdf.arp.impl.ARPSaxErrorHandler.fatalError(ARPSaxErrorHandler.java:35)
at com.hp.hpl.jena.rdf.arp.impl.XMLHandler.warning(XMLHandler.java:225)
at
com.hp.hpl.jena.rdf.arp.impl.XMLHandler.fatalError(XMLHandler.java:255)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at
com.hp.hpl.jena.rdf.arp.impl.RDFXMLParser.parse(RDFXMLParser.java:142)
at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:158)
at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:145)
at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:215)
at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:84)
at com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:187)
at
com.hp.hpl.jena.util.FileManager.readModelWorker(FileManager.java:367)
at com.hp.hpl.jena.util.FileManager.readModel(FileManager.java:335)
at com.hp.hpl.jena.util.FileManager.readModel(FileManager.java:319)
at
com.hp.hpl.jena.ontology.OntDocumentManager.read(OntDocumentManager.java:1064)
at
com.hp.hpl.jena.ontology.OntDocumentManager$1.readModel(OntDocumentManager.java:1034)
at
com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.getModel(ModelMakerImpl.java:78)
at
com.hp.hpl.jena.ontology.OntDocumentManager.fetchLoadedImportModel(OntDocumentManager.java:1031)
at
com.hp.hpl.jena.ontology.OntDocumentManager.fetchPossiblyCachedImportModel(OntDocumentManager.java:1004)
at
com.hp.hpl.jena.ontology.OntDocumentManager.loadImport(OntDocumentManager.java:977)
at
com.hp.hpl.jena.ontology.OntDocumentManager.loadImports(OntDocumentManager.java:771)
at
com.hp.hpl.jena.ontology.OntDocumentManager.loadImports(OntDocumentManager.java:709)
at
com.hp.hpl.jena.ontology.impl.OntModelImpl.loadImports(OntModelImpl.java:1887)
at
com.hp.hpl.jena.ontology.impl.OntModelImpl.<init>(OntModelImpl.java:148)
at
com.hp.hpl.jena.ontology.impl.OntModelImpl.<init>(OntModelImpl.java:120)
at
com.hp.hpl.jena.rdf.model.ModelFactory.createOntologyModel(ModelFactory.java:402)
at
org.semanticscience.hyque.model.ModelLoader.loadModelWithImports(ModelLoader.java:31)
at
org.semanticscience.hyque.SpinInferenceRunnerTest.testOne(SpinInferenceRunnerTest.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at
org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.xml.sax.SAXParseException; systemId:
http://localhost/tmp/import.n3; lineNumber: 1; columnNumber: 1;
Content is not allowed in prolog.
at
org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
... 56 more
*****************************************
This makes me think that Jena is expecting the imported files to be in
RDF/XML format. Is there any way I can specify otherwise? I had
thought that passing "N3" as the language when calling the
loadModelWithImports() method would be all that was needed, but it
seems not.
Any help is appreciated! Thanks,
Alison