Re: Extending SPARQL XML result format

Hi Thomas,

If you'd like to suggest a change to Jena, please send a pull request 
and we can see whether the user community prefers extensibility or non- 
extensibility.

     Andy

On 11/07/18 13:49, Thomas Francart wrote:
> Olivier, you have the reference to the code in the stacktrace excerpt I 
> posted. See 
> https://github.com/apache/jena/blob/0366da2c37b64978893897eba068fdb6b47ea782/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsStAX.java#L281
> 
> Thomas
> 
> 2018-07-11 14:46 GMT+02:00 Olivier Rossel <olivier.rossel@gmail.com 
> <mailto:olivier.rossel@gmail.com>>:
> 
>     Did you check which code in Jena triggers the schema validation? I
>     don't see this as a so strong requirement.
> 
>     Le mer. 11 juil. 2018 à 14:37, Thomas Francart
>     <thomas.francart@sparna.fr <mailto:thomas.francart@sparna.fr>> a écrit :
> 
>         Hello
> 
>         Trying to parse the following extended SPARQL result XML works
>         in RDF4J but fails in Jena.
>         Conclusion : SPARQL XML result format is not extensible from the
>         standard point of view, neither from a practical point of view
>         if one of the major RDF library fails in dealing with this (with
>         reason, since the standard does not allow it). Using other
>         namespaces does not help. I will consider using a "Link" header
>         in the HTTP response, as suggested.
> 
>         Best Regards
>         Thomas
> 
>         XML :
> 
>         <?xml version="1.0"?>
>         <sparql xmlns="http://www.w3.org/2005/sparql-results#
>         <http://www.w3.org/2005/sparql-results#>">
>            <meta xmlns="http://sparna.fr/sparql-results-extension#
>         <http://sparna.fr/sparql-results-extension#>">
>              <timeMillis
>         xmlns="http://sparna.fr/sparql-results-extension#
>         <http://sparna.fr/sparql-results-extension#>">123456</timeMillis>
>            </meta>
>            <head>
>              <variable name="concept"/>
>              <variable name="prefLabel"/>
>            </head>
>            <results>
>              <result>
>                <binding name="concept">
>                 
>         <uri>http://vocabularies.unesco.org/thesaurus/concept9331
>         <http://vocabularies.unesco.org/thesaurus/concept9331></uri>
>                </binding>
>                <binding name="prefLabel">
>                  <literal xml:lang="en">Teacher education</literal>
>                </binding>
>              </result>
>            </results>
>         </sparql>
> 
>         Code with RDF4J :
> 
>         TupleQueryResultParserRegistry.getInstance().get(TupleQueryResultFormat.SPARQL).get().getParser().parseQueryResult(new
>         FileInputStream("/path/to/sparql-result-extended.xml"));
> 
>         Code with Jena :
> 
>         ResultSetMgr.read(new
>         FileInputStream("/path/to/sparql-result-extended.xml"),
>         ResultSetLang.SPARQLResultSetXML);
> 
>         Exception :
> 
>         Caused by: org.apache.jena.sparql.resultset.ResultSetException:
>         skipToHead: Unexpected tag:
>         {http://sparna.fr/sparql-results-extension#}meta
>         <http://sparna.fr/sparql-results-extension#%7Dmeta>
>              at
>         org.apache.jena.riot.resultset.rw.ResultsStAX.staxError(ResultsStAX.java:466)
>              at
>         org.apache.jena.riot.resultset.rw.ResultsStAX.skipTo(ResultsStAX.java:282)
> 
> 
> 
> 
> 
>         2018-07-09 19:36 GMT+02:00 Gregory Williams
>         <greg@evilfunhouse.com <mailto:greg@evilfunhouse.com>>:
> 
>             FWIW, the hacky but standards compliant way I’ve dealt with
>             this in the past is by using the link element with a data: URI.
> 
>             .greg
> 
>             On Jul 9, 2018, at 10:10 AM, Thomas Francart
>             <thomas.francart@sparna.fr
>             <mailto:thomas.francart@sparna.fr>> wrote:
> 
>>             Hello
>>
>>             Thanks for your answers, here is slightly more extended
>>             description of the use-case : I am preparing a "SPARQL
>>             query mediator", that is a SPARQL-compatible service that
>>             will send the same query to multiple sources and aggregate
>>             the results into a single resultset. It can also
>>             articulate part of the query with other datasources (like
>>             if the SERVICE keyword was used). This involves
>>             preprocessings on the query, and post-processing on the
>>             result sets.
>>
>>               * I would like the SPARQL client to know if one of the
>>                 source has reached a LIMIT number of results (I plan
>>                 to limit the number of results to X for each source)
>>               * I was also thinking about proving the "explain" of the
>>                 query processing if the SPARQL client asked for it
>>                 (which sources were queried, how the query got
>>                 transformed, etc;)
>>
>>             So the information could be pretty structured and does not
>>             seem to fit well in HTTP headers.
>>
>>             Thanks for your ideas. I might try parsing with
>>             additionnal XML elements and let you know.
>>
>>             Best Regards
>>             Thomas
>>
>>
>>             2018-07-09 13:56 GMT+02:00 Olivier Rossel
>>             <olivier.rossel@gmail.com <mailto:olivier.rossel@gmail.com>>:
>>
>>                 Can't the HTTP headers contain such informations,
>>                 instead of the XML resultSet ?
>>
>>                 Le lun. 9 juil. 2018 à 13:38, Martynas Jusevičius
>>                 <martynas@atomgraph.com
>>                 <mailto:martynas@atomgraph.com>> a écrit :
>>
>>                     Have you tried parsing?
>>
>>                     I think if you used XML elements in your own
>>                     namespace, it should not
>>                     be a problem.
>>
>>                     But probably better to start by explaining what
>>                     your use case is,
>>                     rather than the solution you think you need.
>>
>>                     On Mon, Jul 9, 2018 at 1:31 PM, Thomas Francart
>>                     <thomas.francart@sparna.fr
>>                     <mailto:thomas.francart@sparna.fr>> wrote:
>>                     > Hello
>>                     >
>>                     > I would like to extend a SPARQL XML result
>>                     format with custom header
>>                     > information; such as query execution time,
>>                     warning if a search limit was
>>                     > reached during query execution, or other king of
>>                     meta-information about the
>>                     > resultset.
>>                     >
>>                     > From the definition of the SPARQL XML result
>>                     format at
>>                     > https://www.w3.org/TR/rdf-sparql-XMLres/#schemas
>>                     <https://www.w3.org/TR/rdf-sparql-XMLres/#schemas>, I
>>                     don't see the XML schema
>>                     > allows this; there is no extension point. Could
>>                     someone confirm ?
>>                     >
>>                     > In practice, would it be possible to have
>>                     something like :
>>                     >
>>                     > <?xml version="1.0"?>
>>                     > <sparql
>>                     xmlns="http://www.w3.org/2005/sparql-results#
>>                     <http://www.w3.org/2005/sparql-results#>">
>>                     >
>>                     >   <meta>
>>                     >
>>                     >     <!-- here put some meta information -->
>>                     >
>>                     >   </meta>
>>                     >
>>                     >
>>                     >   <head>
>>                     >
>>                     >     ...
>>                     >
>>                     >   </head>
>>                     >
>>                     >   <results>
>>                     >     ...
>>                     >   </results>
>>                     >
>>                     > </sparql>
>>                     >
>>                     >
>>                     >
>>                     > Would SPARQL result parsers choke on this ?
>>                     RDF4J ? Jena ?
>>                     > Is anyone already using this technique ?
>>                     >
>>                     > Thanks
>>                     > Thomas
>>                     >
>>                     > --
>>                     >
>>                     > Thomas Francart - SPARNA
>>                     > Web de données | Architecture de l'information |
>>                     Accès aux connaissances
>>                     > blog : blog.sparna.fr <http://blog.sparna.fr>,
>>                     site : sparna.fr <http://sparna.fr>, linkedin :
>>                     > fr.linkedin.com/in/thomasfrancart
>>                     <http://fr.linkedin.com/in/thomasfrancart>
>>                     > tel :  +33 (0)6.71.11.25.97, skype : francartthomas
>>
>>
>>
>>
>>             -- 
>>             *
>>             *
>>             *Thomas Francart* -*SPARNA*
>>             Web de _données_ | Architecture de l'_information_ | Accès
>>             aux _connaissances_
>>             blog : blog.sparna.fr <http://blog.sparna.fr>, site :
>>             sparna.fr <http://sparna.fr>, linkedin :
>>             fr.linkedin.com/in/thomasfrancart
>>             <https://fr.linkedin.com/in/thomasfrancart>
>>             tel :  +33 (0)6.71.11.25.97, skype : francartthomas
> 
> 
> 
> 
>         -- 
>         *
>         *
>         *Thomas Francart* -*SPARNA*
>         Web de _données_ | Architecture de l'_information_ | Accès aux
>         _connaissances_
>         blog : blog.sparna.fr <http://blog.sparna.fr>, site : sparna.fr
>         <http://sparna.fr>, linkedin : fr.linkedin.com/in/thomasfrancart
>         <https://fr.linkedin.com/in/thomasfrancart>
>         tel :  +33 (0)6.71.11.25.97, skype : francartthomas
> 
> 
> 
> 
> -- 
> *
> *
> *Thomas Francart* -*SPARNA*
> Web de _données_ | Architecture de l'_information_ | Accès aux 
> _connaissances_
> blog : blog.sparna.fr <http://blog.sparna.fr>, site : sparna.fr 
> <http://sparna.fr>, linkedin : fr.linkedin.com/in/thomasfrancart 
> <https://fr.linkedin.com/in/thomasfrancart>
> tel :  +33 (0)6.71.11.25.97, skype : francartthomas

Received on Tuesday, 31 July 2018 10:56:38 UTC