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