You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Stephen Allen (JIRA)" <ji...@apache.org> on 2013/05/29 01:28:20 UTC
[jira] [Updated] (JENA-462) URIs ending in a percent-encoded
character cannot be written as a property in RDF/XML
[ https://issues.apache.org/jira/browse/JENA-462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephen Allen updated JENA-462:
-------------------------------
Description:
URIs ending in a percent-encoded character cannot be written as a property in RDF/XML. Note that there is no problem using this URI in the subject or object positions, or using a different serialization like Turtle. It is also OK as long as the URI doesn't *end* in the percent encoded character.
I'm not sure why BaseXMLWriter.java line 384 requires the ability to split predicate URIs into a namespace and local part. Is this a requirement of RDF/XML?
Steps to Reproduce:
1) Start Fuseki
2) Perform following SPARQL Update (%27 equals the ' character in this case):
insert data { <http://example.org/Test> <http://example.org/Foo%27> "Foo" . }
3) Issue the following query (with XML selected as output):
construct { ?s ?p "Foo" . } where { ?s ?p "Foo" . }
Expected Results:
Proper RDF/XML.
Actual Results:
com.hp.hpl.jena.shared.InvalidPropertyURIException: http://example.org/Foo%27
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.splitTag(BaseXMLWriter.java:384)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.tag(BaseXMLWriter.java:396)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.startElementTag(BaseXMLWriter.java:355)
at com.hp.hpl.jena.xmloutput.impl.Basic.writePredicate(Basic.java:101)
at com.hp.hpl.jena.xmloutput.impl.Basic.writeRDFStatements(Basic.java:85)
at com.hp.hpl.jena.xmloutput.impl.Basic.writeRDFStatements(Basic.java:74)
at com.hp.hpl.jena.xmloutput.impl.Basic.writeBody(Basic.java:48)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.writeXMLBody(BaseXMLWriter.java:492)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:464)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:450)
at org.apache.jena.fuseki.servlets.ResponseModel.doResponseModel(ResponseModel.java:121)
at org.apache.jena.fuseki.servlets.SPARQL_Query.sendResults(SPARQL_Query.java:349)
at org.apache.jena.fuseki.servlets.SPARQL_Query.execute(SPARQL_Query.java:255)
at org.apache.jena.fuseki.servlets.SPARQL_Query.executeWithParameter(SPARQL_Query.java:215)
at org.apache.jena.fuseki.servlets.SPARQL_Query.perform(SPARQL_Query.java:106)
at org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommonWorker(SPARQL_ServletBase.java:117)
at org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommon(SPARQL_ServletBase.java:67)
at org.apache.jena.fuseki.servlets.SPARQL_Query.doGet(SPARQL_Query.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:82)
at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:243)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:365)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
at org.eclipse.jetty.server.nio.BlockingChannelConnector$BlockingChannelEndPoint.run(BlockingChannelConnector.java:298)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:662)
was:
URIs ending in a percent-encoded character cannot be written as a property in RDF/XML. Note that there is no problem using this URI in the subject or object positions, or using a different serialization like Turtle. It is also OK as long as the URI doesn't *end* in the percent encoded character.
I'm not sure why BaseXMLWriter.java line 384 requires the ability to split predicate URIs into a namespace and local part. Is this a requirement of RDF/XML?
Steps to Reproduce:
1) Start Fuseki
2) Perform following SPARQL Update:
insert data { <http://example.org/Test> <http://example.org/Foo%27> "Foo" . }
3) Issue the following query (with XML selected as output):
construct { ?s ?p "Foo" . } where { ?s ?p "Foo" . }
Expected Results:
Proper RDF/XML.
Actual Results:
com.hp.hpl.jena.shared.InvalidPropertyURIException: http://example.org/Foo%27
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.splitTag(BaseXMLWriter.java:384)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.tag(BaseXMLWriter.java:396)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.startElementTag(BaseXMLWriter.java:355)
at com.hp.hpl.jena.xmloutput.impl.Basic.writePredicate(Basic.java:101)
at com.hp.hpl.jena.xmloutput.impl.Basic.writeRDFStatements(Basic.java:85)
at com.hp.hpl.jena.xmloutput.impl.Basic.writeRDFStatements(Basic.java:74)
at com.hp.hpl.jena.xmloutput.impl.Basic.writeBody(Basic.java:48)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.writeXMLBody(BaseXMLWriter.java:492)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:464)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:450)
at org.apache.jena.fuseki.servlets.ResponseModel.doResponseModel(ResponseModel.java:121)
at org.apache.jena.fuseki.servlets.SPARQL_Query.sendResults(SPARQL_Query.java:349)
at org.apache.jena.fuseki.servlets.SPARQL_Query.execute(SPARQL_Query.java:255)
at org.apache.jena.fuseki.servlets.SPARQL_Query.executeWithParameter(SPARQL_Query.java:215)
at org.apache.jena.fuseki.servlets.SPARQL_Query.perform(SPARQL_Query.java:106)
at org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommonWorker(SPARQL_ServletBase.java:117)
at org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommon(SPARQL_ServletBase.java:67)
at org.apache.jena.fuseki.servlets.SPARQL_Query.doGet(SPARQL_Query.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:82)
at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:243)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:365)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
at org.eclipse.jetty.server.nio.BlockingChannelConnector$BlockingChannelEndPoint.run(BlockingChannelConnector.java:298)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:662)
> URIs ending in a percent-encoded character cannot be written as a property in RDF/XML
> -------------------------------------------------------------------------------------
>
> Key: JENA-462
> URL: https://issues.apache.org/jira/browse/JENA-462
> Project: Apache Jena
> Issue Type: Bug
> Reporter: Stephen Allen
>
> URIs ending in a percent-encoded character cannot be written as a property in RDF/XML. Note that there is no problem using this URI in the subject or object positions, or using a different serialization like Turtle. It is also OK as long as the URI doesn't *end* in the percent encoded character.
> I'm not sure why BaseXMLWriter.java line 384 requires the ability to split predicate URIs into a namespace and local part. Is this a requirement of RDF/XML?
> Steps to Reproduce:
> 1) Start Fuseki
> 2) Perform following SPARQL Update (%27 equals the ' character in this case):
> insert data { <http://example.org/Test> <http://example.org/Foo%27> "Foo" . }
> 3) Issue the following query (with XML selected as output):
> construct { ?s ?p "Foo" . } where { ?s ?p "Foo" . }
> Expected Results:
> Proper RDF/XML.
> Actual Results:
> com.hp.hpl.jena.shared.InvalidPropertyURIException: http://example.org/Foo%27
> at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.splitTag(BaseXMLWriter.java:384)
> at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.tag(BaseXMLWriter.java:396)
> at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.startElementTag(BaseXMLWriter.java:355)
> at com.hp.hpl.jena.xmloutput.impl.Basic.writePredicate(Basic.java:101)
> at com.hp.hpl.jena.xmloutput.impl.Basic.writeRDFStatements(Basic.java:85)
> at com.hp.hpl.jena.xmloutput.impl.Basic.writeRDFStatements(Basic.java:74)
> at com.hp.hpl.jena.xmloutput.impl.Basic.writeBody(Basic.java:48)
> at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.writeXMLBody(BaseXMLWriter.java:492)
> at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:464)
> at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:450)
> at org.apache.jena.fuseki.servlets.ResponseModel.doResponseModel(ResponseModel.java:121)
> at org.apache.jena.fuseki.servlets.SPARQL_Query.sendResults(SPARQL_Query.java:349)
> at org.apache.jena.fuseki.servlets.SPARQL_Query.execute(SPARQL_Query.java:255)
> at org.apache.jena.fuseki.servlets.SPARQL_Query.executeWithParameter(SPARQL_Query.java:215)
> at org.apache.jena.fuseki.servlets.SPARQL_Query.perform(SPARQL_Query.java:106)
> at org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommonWorker(SPARQL_ServletBase.java:117)
> at org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommon(SPARQL_ServletBase.java:67)
> at org.apache.jena.fuseki.servlets.SPARQL_Query.doGet(SPARQL_Query.java:86)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
> at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:82)
> at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:243)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
> at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229)
> at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
> at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
> at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
> at org.eclipse.jetty.server.Server.handle(Server.java:365)
> at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
> at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
> at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
> at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
> at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
> at org.eclipse.jetty.server.nio.BlockingChannelConnector$BlockingChannelEndPoint.run(BlockingChannelConnector.java:298)
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
> at java.lang.Thread.run(Thread.java:662)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira