On 14/03/18 12:48, Martynas Jusevičius wrote:
Andy,
I don't think that helps much. In fact, I think treating ASK result
differently from SELECT breaks some abstractions.
What I mean is that the result data structure normally maps to a media type
and not its query form. That way we can have generic parsers/serializers
that are orthogonal to application logic, for example:
MessageBodyReader<Model>: application/rdf+xml, text/turtle,
application/n-triples...
MessageBodyReader<Dataset>: application/n-quads...
MessageBodyReader<ResultSet>: application/sparql-results+xml,
application/sparql-results+json...
Jena's treatment of ASK result breaks this pattern, because it maps to the
same media types as ResultSet does, but there is no way to parse it as
such. Do you see what I mean?
SPARQLResult does not help, because MessageBodyReader<SPARQLResult> makes
little sense.
Why not use it for the SELECT/ASK case?
(Why not introduce your own results container type?)
Take a look at ResultsReader (not in 3.0.1).
Andy
Why not have ResultSet.getBoolean() or something?
On Mon, Mar 12, 2018 at 12:17 PM, Andy Seaborne <[email protected]> wrote:
JSONInput.make(InputStream) -> SPARQLResult
Andy
On 12/03/18 10:13, Martynas Jusevičius wrote:
Hi Andy,
I'm not using QueryExecution here, I'm trying to parse JSON read from HTTP
InputStream using ResultSetFactory.fromJSON().
Then I want to carry the result set, maybe do some logic based on it, and
possibly serialize it back using ResultSetFormatter.
Is that not possible with ASK result?
On Mon, Mar 12, 2018 at 9:46 AM, Andy Seaborne <[email protected]> wrote:
On 11/03/18 23:03, Martynas Jusevičius wrote:
Hi,
I'm getting the following JSON result from an ASK query:
{ "head": {}, "boolean": true }
However, the method that usually works fine, will not parse it from
InputStream (Jena 3.0.1):
org.apache.jena.sparql.resultset.ResultSetException: Not a
ResultSet
result
org.apache.jena.sparql.resultset.SPARQLResult.getResultSet(
SPARQLResult.java:94)
org.apache.jena.sparql.resultset.JSONInput.fromJSON(JSONInput.java:64)
org.apache.jena.query.ResultSetFactory.fromJSON(ResultSetFac
tory.java:331)
I stepped inside the code and I see that JSONObject is parsed fine, but
afterwards SPARQLResult.resultSet field is not being set for some
reason.
Any ideas?
The outcome of an ASK query is a boolean, not a ResultSet.
See execAsk.
SPARQLResult is the class for a holder of any SPARQL result type.
Andy
Martynas