Sorry, I missed this response and question somehow.

Here's the OWL model I'm using in RDF/XML format:
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
    xmlns:sadlbasemodel="http://sadl.org/sadlbasemodel";
    xmlns:owl="http://www.w3.org/2002/07/owl#";
    xmlns:sadlimplicitmodel="http://sadl.org/sadlimplicitmodel";
    xmlns:builtinfunctions="http://sadl.org/builtinfunctions";
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#";
    xmlns:Simple="http://sadl.org/Simple.sadl#";
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#";
  xml:base="http://sadl.org/Simple.sadl";>
  <owl:Ontology rdf:about="">
    <owl:imports rdf:resource="builtinfunctions"/>
    <owl:imports rdf:resource="sadlimplicitmodel"/>
    <owl:imports rdf:resource="sadlbasemodel"/>
    <rdfs:comment xml:lang="en">This ontology was created from a SADL file 
'Simple.sadl' and should not be directly edited.</rdfs:comment>
  </owl:Ontology>
  <owl:Class rdf:ID="Rock"/>
</rdf:RDF>

This model is written out as RDF_THRIFT file Simple.trdf with this code:

                        model.setNsPrefix(prefix, modelName);
                        RDFDataMgr.write(out, model, format);
where 
        model is the Jena OntModel which serializes to RDF/XML as above,
        prefix is "Simple", 
        modelName is "http://sadl.org/Simple.sadl";,
        out is the OutputStream,
        format is RDFFormat.RDF-THRIFT

An attempt is then made to read this file with the following code:

                                        schemaModel = 
ModelFactory.createOntologyModel(spec);
                                        ReadFailureHandler rfHandler = new 
SadlReadFailureHandler(logger);
                                        
schemaModel.getDocumentManager().setProcessImports(true);
                                        
schemaModel.getDocumentManager().setReadFailureHandler(rfHandler );
                                        
schemaModel.getSpecification().setImportModelGetter((ModelGetter) 
configurationMgr.getModelGetter());
                                        schemaModel.read(tbox, format);
where
        spec is OntModelSpec.OWL_MEM
        The ModelGetter set is a custom one but stepping down in to the code to 
where the exception is thrown, the ModelGetter is not called.
        tbox is "file:/..../Simple.trdf"
        format is "RDF-THRIFT"

Note that the imports were written similarly and the error occurs on reading in 
of this file, not reading the imports.

Again, the error is: 
org.apache.jena.riot.thrift.RiotThriftException: 
org.apache.thrift.protocol.TProtocolException: Required field 'uri' was not 
present! Struct: RDF_PrefixDecl(prefix:
sadlbasemode, uri:null)
        at org.apache.jena.riot.thrift.TRDF.exception(TRDF.java:133)
        at org.apache.jena.riot.thrift.BinRDF.apply(BinRDF.java:180)
        at org.apache.jena.riot.thrift.BinRDF.protocolToStream(BinRDF.java:159)
        at 
org.apache.jena.riot.thrift.BinRDF.inputStreamToStream(BinRDF.java:147)
        at 
org.apache.jena.riot.RDFParserRegistry$ReaderRDFThrift.read(RDFParserRegistry.java:216)
        at org.apache.jena.riot.RDFParser.read(RDFParser.java:353)
        at org.apache.jena.riot.RDFParser.parseNotUri(RDFParser.java:343)
        at org.apache.jena.riot.RDFParser.parse(RDFParser.java:292)
        at 
org.apache.jena.riot.RDFParserBuilder.parse(RDFParserBuilder.java:540)
        at 
org.apache.jena.riot.RDFDataMgr.parseFromInputStream(RDFDataMgr.java:901)
        at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:299)
        at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:285)
        at 
org.apache.jena.riot.adapters.RDFReaderRIOT.read(RDFReaderRIOT.java:69)
        at org.apache.jena.rdf.model.impl.ModelCom.read(ModelCom.java:305)
        at 
org.apache.jena.ontology.impl.OntModelImpl.read(OntModelImpl.java:2232)
        at org.apache.jena.rdf.model.impl.ModelCom.read(ModelCom.java:289)
        at 
org.apache.jena.ontology.impl.OntModelImpl.readDelegate(OntModelImpl.java:3092)
        at 
org.apache.jena.ontology.impl.OntModelImpl.read(OntModelImpl.java:2190)
        at 
org.apache.jena.ontology.impl.OntModelImpl.read(OntModelImpl.java:2148)

Note also that this works for all of the other RDF serialization formats except 
RDF-THRIFT.


-----Original Message-----
From: Andy Seaborne <[email protected]> 
Sent: Thursday, August 6, 2020 1:11 PM
To: [email protected]
Subject: EXT: Re: Difficult using RDFFormat.RDF_THRIFT with RDFDataMgr

Hi there,

Could you provide the file that's in error together with what should be in the 
file? Files are processed one by one so the problem should show up when reading 
the thrift file in isolation to the ontology.

Which version of Jena are you using?

    Andy


On 06/08/2020 16:23, Crapo, Andrew (GE Research, US) wrote:
>   I have a small OWL file that imports other OWL files. I have saved each 
> using RDFDataMgr with RDFFormat.RDF_THRIFT as the language. When I try to 
> load one of the persisted OWL files using RDFDataMgr, I get this error: 
> "org.apache.jena.riot.thrift.RiotThriftException: 
> org.apache.thrift.protocol.TProtocolException: Required field 'uri' was not 
> present". I experimented with making sure that there was a prefix and URI in 
> the map for each OntModel that was written and determined that the error 
> appears to occur for one of the imported models. However, I cannot get the 
> RDF_THRIFT serialization to load. Any suggestions on how to get this to work?
> 
> Andrew W Crapo
> Information Scientist
> GE Global Research
> 
> T +1 518 387-5729
> [email protected]<mailto:[email protected]>
> 
> One Research Circle
> Niskayuna, NY 12302 USA
> 
> GE imagination at work
> 
> 

Reply via email to