You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Andy Seaborne <an...@apache.org> on 2012/08/01 13:40:13 UTC

Re: Failing to load N3 encoded rdf using HTTP ...

On 31/07/12 19:37, Jim Karavias wrote:
> Hi,
>
> I've been trying to load a dataset using an assembler when starting Fuseki.
>   I have no trouble loading RDF/XML when specifying external content using
> an http: url.  Fuseki fails to load n3 data served the same way.

Hi there - there was a bug in determining the syntax.  Nothing to do with

 > ja:contentEncoding "N3" ;

which (and the documentation is not clear here) only affects inline 
string data.

It should have poked around and found the ".n3" to guess the syntax.  A 
complete system replacement for reading files with proper content 
negotiation is in the works but for now I've fixed the in-place code to 
work.

The bug is now fixed (in jena-core) and will be in the incorporated into 
the overnight build of everything including Fuseki tonight.

	Andy

>
> For example, if i use the following assembler, fuseki loads the dataset
> just fine:
>
> @prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
> @prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> @prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
> @prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
> @prefix jpk:  <http://jpk.iag.com/assembler#> .
>
> [] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
>
> jpk:root rdf:type ja:RDFDataset ;
>   ja:defaultGraph jpk:testgraph;
> .
>
> jpk:testgraph rdf:type ja:MemoryModel ;
>   ja:content    [
>      ja:externalContent <http://localhost:8080/test/resources/IDTestModel.rdf
>> ;
> ];
> .
>
> However the following fails with a SAX parser error that I believe
> indicates that its still trying to parse RDF/XML when the external content
> is N3:
>
> @prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
> @prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> @prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
> @prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
> @prefix jpk:  <http://jpk.iag.com/assembler#> .
>
> [] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
>
> jpk:root rdf:type ja:RDFDataset ;
>   ja:defaultGraph jpk:testgraph;
> .
>
> jpk:testgraph rdf:type ja:MemoryModel ;
>   ja:content [
>
> ja:contentEncoding "N3" ;
>
> ja:externalContent <http://localhost:8080/test/resources/IDTestModel.n3>
>
> ];
> .
>
> Exception:
>
> C:\Program Files\jena-fuseki-0.2.1-incubating>java -jar fuseki-server.jar
> --update  --desc=C:\git-repositories\snap-client\src\test\
> resources\IDTestAssembler.ttl /DB
> 11:15:03 INFO  Server               :: Dataset from assembler
> 11:15:03 ERROR RDFDefaultErrorHandler ::
> http://localhost:8080/test/resources/IDTestModel.n3(line 1 column 1):
> Content is not allowe
> d in prolog.
> com.hp.hpl.jena.assembler.exceptions.AssemblerException: caught:
> org.xml.sax.SAXParseException; systemId: http://localhost:8080/test
> /resources/IDTestModel.n3; lineNumber: 1; columnNumber: 1; Content is not
> allowed in prolog.
>    doing:
>      root: 4243f4d7:138de3f8d93:-7ffe with type:
> http://jena.hpl.hp.com/2005/11/Assembler#ContentItem assembler class: class
> com.hp.h
> pl.jena.assembler.assemblers.ContentAssembler
>      root: 4243f4d7:138de3f8d93:-7fe8 with type:
> http://jena.hpl.hp.com/2005/11/Assembler#Content assembler class: class
> com.hp.hpl.j
> ena.assembler.assemblers.ContentAssembler
>      root: http://jpk.iag.com/assembler#testgraph with type:
> http://jena.hpl.hp.com/2005/11/Assembler#MemoryModel assembler class: cl
> ass com.hp.hpl.jena.assembler.assemblers.MemoryModelAssembler
>      root: http://jpk.iag.com/assembler#root with type:
> http://jena.hpl.hp.com/2005/11/Assembler#RDFDataset assembler class: class
> co
> m.hp.hpl.jena.sparql.core.assembler.DatasetAssembler
>
>          at
> com.hp.hpl.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:138)
>          at
> com.hp.hpl.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.open(AssemblerGroup.java:117)
>          at
> com.hp.hpl.jena.assembler.assemblers.AssemblerGroup$ExpandingAssemblerGroup.open(AssemblerGroup.java:81)
>          at
> com.hp.hpl.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:52)
> ...(omitted)...
>          at arq.cmdline.CmdArgModule.process(CmdArgModule.java:51)
>          at arq.cmdline.CmdMain.mainMethod(CmdMain.java:96)
>          at arq.cmdline.CmdMain.mainRun(CmdMain.java:59)
>          at arq.cmdline.CmdMain.mainRun(CmdMain.java:46)
>          at org.apache.jena.fuseki.FusekiCmd.main(FusekiCmd.java:101)
> Caused by: com.hp.hpl.jena.shared.JenaException:
> org.xml.sax.SAXParseException; systemId:
> http://localhost:8080/test/resources/IDTes
> tModel.n3; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
>          at
> com.hp.hpl.jena.rdf.model.impl.RDFDefaultErrorHandler.fatalError(RDFDefaultErrorHandler.java:60)
>          at
> com.hp.hpl.jena.rdf.arp.impl.ARPSaxErrorHandler.fatalError(ARPSaxErrorHandler.java:51)
>          at
> com.hp.hpl.jena.rdf.arp.impl.XMLHandler.warning(XMLHandler.java:211)
>          at
> com.hp.hpl.jena.rdf.arp.impl.XMLHandler.fatalError(XMLHandler.java:241)
>          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)
> ...(omitted) ...
>          at
> com.hp.hpl.jena.assembler.assemblers.ContentAssembler.objectAsContent(ContentAssembler.java:154)
>          at
> com.hp.hpl.jena.assembler.assemblers.ContentAssembler.addExternalContents(ContentAssembler.java:82)
>          at
> com.hp.hpl.jena.assembler.assemblers.ContentAssembler.loadContent(ContentAssembler.java:68)
>          at
> com.hp.hpl.jena.assembler.assemblers.ContentAssembler.open(ContentAssembler.java:44)
>          at
> com.hp.hpl.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:130)
>          ... 36 more
> Caused by: org.xml.sax.SAXParseException; systemId:
> http://localhost:8080/test/resources/IDTestModel.n3; lineNumber: 1;
> columnNumber
> : 1; Content is not allowed in prolog.
>          at
> org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
> Source)
>          ... 61 more
>
>
>
> I've tried with and without the .n3 extension on the URL.  I've also
> ensured that the content is being served as "text/n3" from apache.
>
> Here are the first few lines of n3 I'm trying to load:
>
> @prefix xsd:  <http://www.w3.org/2001/XMLSchema#>.
> @prefix urn:  <http://www.iag.com/2012/snap#>.
>
>     <urn:1>   a  <urn:ID>;
>
> <http://www.w3.org/2000/01/rdf-schema#label> "This is the title"@en;
>
> <urn:hasTitle> "this is the title"@en;
>
> <urn:hasDescription> "this is the description"@en;
>
> <urn:hasCreator> <urn:2>;
>
> <urn:hasOrganization> <urn:3>...
>
>
> Am I using ja:contentEncoding property correctly?
>
> Regards,
>
> Jim Karavias
>


Re: Failing to load N3 encoded rdf using HTTP ...

Posted by Jim Karavias <jk...@innovation-asset.com>.
Thanks!  That will be very helpful in our CI environment.

Regards,

Jim Karavias

On Wed, Aug 1, 2012 at 4:40 AM, Andy Seaborne <an...@apache.org> wrote:

> On 31/07/12 19:37, Jim Karavias wrote:
>
>> Hi,
>>
>> I've been trying to load a dataset using an assembler when starting
>> Fuseki.
>>   I have no trouble loading RDF/XML when specifying external content using
>> an http: url.  Fuseki fails to load n3 data served the same way.
>>
>
> Hi there - there was a bug in determining the syntax.  Nothing to do with
>
> > ja:contentEncoding "N3" ;
>
> which (and the documentation is not clear here) only affects inline string
> data.
>
> It should have poked around and found the ".n3" to guess the syntax.  A
> complete system replacement for reading files with proper content
> negotiation is in the works but for now I've fixed the in-place code to
> work.
>
> The bug is now fixed (in jena-core) and will be in the incorporated into
> the overnight build of everything including Fuseki tonight.
>
>         Andy
>
>
>
>> For example, if i use the following assembler, fuseki loads the dataset
>> just fine:
>>
>> @prefix tdb:     <http://jena.hpl.hp.com/2008/**tdb#<http://jena.hpl.hp.com/2008/tdb#>>
>> .
>> @prefix rdf:     <http://www.w3.org/1999/02/22-**rdf-syntax-ns#<http://www.w3.org/1999/02/22-rdf-syntax-ns#>>
>> .
>> @prefix rdfs:    <http://www.w3.org/2000/01/**rdf-schema#<http://www.w3.org/2000/01/rdf-schema#>>
>> .
>> @prefix ja:      <http://jena.hpl.hp.com/2005/**11/Assembler#<http://jena.hpl.hp.com/2005/11/Assembler#>>
>> .
>> @prefix jpk:  <http://jpk.iag.com/assembler#**> .
>>
>> [] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
>>
>> jpk:root rdf:type ja:RDFDataset ;
>>   ja:defaultGraph jpk:testgraph;
>> .
>>
>> jpk:testgraph rdf:type ja:MemoryModel ;
>>   ja:content    [
>>      ja:externalContent <http://localhost:8080/test/**
>> resources/IDTestModel.rdf<http://localhost:8080/test/resources/IDTestModel.rdf>
>>
>>> ;
>>>
>> ];
>> .
>>
>> However the following fails with a SAX parser error that I believe
>> indicates that its still trying to parse RDF/XML when the external content
>> is N3:
>>
>> @prefix tdb:     <http://jena.hpl.hp.com/2008/**tdb#<http://jena.hpl.hp.com/2008/tdb#>>
>> .
>> @prefix rdf:     <http://www.w3.org/1999/02/22-**rdf-syntax-ns#<http://www.w3.org/1999/02/22-rdf-syntax-ns#>>
>> .
>> @prefix rdfs:    <http://www.w3.org/2000/01/**rdf-schema#<http://www.w3.org/2000/01/rdf-schema#>>
>> .
>> @prefix ja:      <http://jena.hpl.hp.com/2005/**11/Assembler#<http://jena.hpl.hp.com/2005/11/Assembler#>>
>> .
>> @prefix jpk:  <http://jpk.iag.com/assembler#**> .
>>
>> [] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
>>
>> jpk:root rdf:type ja:RDFDataset ;
>>   ja:defaultGraph jpk:testgraph;
>> .
>>
>> jpk:testgraph rdf:type ja:MemoryModel ;
>>   ja:content [
>>
>> ja:contentEncoding "N3" ;
>>
>> ja:externalContent <http://localhost:8080/test/**resources/IDTestModel.n3<http://localhost:8080/test/resources/IDTestModel.n3>
>> >
>>
>> ];
>> .
>>
>> Exception:
>>
>> C:\Program Files\jena-fuseki-0.2.1-**incubating>java -jar
>> fuseki-server.jar
>> --update  --desc=C:\git-repositories\**snap-client\src\test\
>> resources\IDTestAssembler.ttl /DB
>> 11:15:03 INFO  Server               :: Dataset from assembler
>> 11:15:03 ERROR RDFDefaultErrorHandler ::
>> http://localhost:8080/test/**resources/IDTestModel.n3(line<http://localhost:8080/test/resources/IDTestModel.n3(line>1 column 1):
>> Content is not allowe
>> d in prolog.
>> com.hp.hpl.jena.assembler.**exceptions.AssemblerException: caught:
>> org.xml.sax.SAXParseException; systemId: http://localhost:8080/test
>> /resources/IDTestModel.n3; lineNumber: 1; columnNumber: 1; Content is not
>> allowed in prolog.
>>    doing:
>>      root: 4243f4d7:138de3f8d93:-7ffe with type:
>> http://jena.hpl.hp.com/2005/**11/Assembler#ContentItem<http://jena.hpl.hp.com/2005/11/Assembler#ContentItem>assembler class: class
>> com.hp.h
>> pl.jena.assembler.assemblers.**ContentAssembler
>>      root: 4243f4d7:138de3f8d93:-7fe8 with type:
>> http://jena.hpl.hp.com/2005/**11/Assembler#Content<http://jena.hpl.hp.com/2005/11/Assembler#Content>assembler class: class
>> com.hp.hpl.j
>> ena.assembler.assemblers.**ContentAssembler
>>      root: http://jpk.iag.com/assembler#**testgraph<http://jpk.iag.com/assembler#testgraph>with type:
>> http://jena.hpl.hp.com/2005/**11/Assembler#MemoryModel<http://jena.hpl.hp.com/2005/11/Assembler#MemoryModel>assembler class: cl
>> ass com.hp.hpl.jena.assembler.**assemblers.**MemoryModelAssembler
>>      root: http://jpk.iag.com/assembler#**root<http://jpk.iag.com/assembler#root>with type:
>> http://jena.hpl.hp.com/2005/**11/Assembler#RDFDataset<http://jena.hpl.hp.com/2005/11/Assembler#RDFDataset>assembler class: class
>> co
>> m.hp.hpl.jena.sparql.core.**assembler.DatasetAssembler
>>
>>          at
>> com.hp.hpl.jena.assembler.**assemblers.AssemblerGroup$**
>> PlainAssemblerGroup.**openBySpecificType(**AssemblerGroup.java:138)
>>          at
>> com.hp.hpl.jena.assembler.**assemblers.AssemblerGroup$**
>> PlainAssemblerGroup.open(**AssemblerGroup.java:117)
>>          at
>> com.hp.hpl.jena.assembler.**assemblers.AssemblerGroup$**
>> ExpandingAssemblerGroup.open(**AssemblerGroup.java:81)
>>          at
>> com.hp.hpl.jena.assembler.**assemblers.AssemblerBase.open(**
>> AssemblerBase.java:52)
>> ...(omitted)...
>>          at arq.cmdline.CmdArgModule.**process(CmdArgModule.java:51)
>>          at arq.cmdline.CmdMain.**mainMethod(CmdMain.java:96)
>>          at arq.cmdline.CmdMain.mainRun(**CmdMain.java:59)
>>          at arq.cmdline.CmdMain.mainRun(**CmdMain.java:46)
>>          at org.apache.jena.fuseki.**FusekiCmd.main(FusekiCmd.java:**101)
>> Caused by: com.hp.hpl.jena.shared.**JenaException:
>> org.xml.sax.SAXParseException; systemId:
>> http://localhost:8080/test/**resources/IDTes<http://localhost:8080/test/resources/IDTes>
>> tModel.n3; lineNumber: 1; columnNumber: 1; Content is not allowed in
>> prolog.
>>          at
>> com.hp.hpl.jena.rdf.model.**impl.RDFDefaultErrorHandler.**fatalError(**
>> RDFDefaultErrorHandler.java:**60)
>>          at
>> com.hp.hpl.jena.rdf.arp.impl.**ARPSaxErrorHandler.fatalError(**
>> ARPSaxErrorHandler.java:51)
>>          at
>> com.hp.hpl.jena.rdf.arp.impl.**XMLHandler.warning(XMLHandler.**java:211)
>>          at
>> com.hp.hpl.jena.rdf.arp.impl.**XMLHandler.fatalError(**
>> XMLHandler.java:241)
>>          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)
>> ...(omitted) ...
>>          at
>> com.hp.hpl.jena.assembler.**assemblers.ContentAssembler.**
>> objectAsContent(**ContentAssembler.java:154)
>>          at
>> com.hp.hpl.jena.assembler.**assemblers.ContentAssembler.**
>> addExternalContents(**ContentAssembler.java:82)
>>          at
>> com.hp.hpl.jena.assembler.**assemblers.ContentAssembler.**
>> loadContent(ContentAssembler.**java:68)
>>          at
>> com.hp.hpl.jena.assembler.**assemblers.ContentAssembler.**
>> open(ContentAssembler.java:44)
>>          at
>> com.hp.hpl.jena.assembler.**assemblers.AssemblerGroup$**
>> PlainAssemblerGroup.**openBySpecificType(**AssemblerGroup.java:130)
>>          ... 36 more
>> Caused by: org.xml.sax.SAXParseException; systemId:
>> http://localhost:8080/test/**resources/IDTestModel.n3<http://localhost:8080/test/resources/IDTestModel.n3>;
>> lineNumber: 1;
>> columnNumber
>> : 1; Content is not allowed in prolog.
>>          at
>> org.apache.xerces.util.**ErrorHandlerWrapper.**createSAXParseException(**
>> Unknown
>> Source)
>>          ... 61 more
>>
>>
>>
>> I've tried with and without the .n3 extension on the URL.  I've also
>> ensured that the content is being served as "text/n3" from apache.
>>
>> Here are the first few lines of n3 I'm trying to load:
>>
>> @prefix xsd:  <http://www.w3.org/2001/**XMLSchema#<http://www.w3.org/2001/XMLSchema#>
>> >.
>> @prefix urn:  <http://www.iag.com/2012/snap#**>.
>>
>>     <urn:1>   a  <urn:ID>;
>>
>> <http://www.w3.org/2000/01/**rdf-schema#label<http://www.w3.org/2000/01/rdf-schema#label>>
>> "This is the title"@en;
>>
>> <urn:hasTitle> "this is the title"@en;
>>
>> <urn:hasDescription> "this is the description"@en;
>>
>> <urn:hasCreator> <urn:2>;
>>
>> <urn:hasOrganization> <urn:3>...
>>
>>
>> Am I using ja:contentEncoding property correctly?
>>
>> Regards,
>>
>> Jim Karavias
>>
>>
>