The CSV format is explicitly defined to be a lossy format so some information can and will be lost when serialising to CSV. Specifically the datatypes and language tags for literals and literals/URIs may not be distinguishable due to their encoding.
>From the spec >(http://www.w3.org/TR/2013/REC-sparql11-results-csv-tsv-20130321/#intro): The SPARQL Results CSV Results Format is a lossy encoding of a table of results. It does not encode all the details of each RDF term in the results but instead just gives a string without indicating the type of the term (IRI, Literal, Literal with datatype, Literal with language, or blank node). This makes it simple to consume data, such as text and numbers, in applications without needing to understand the details of RDF. In some applications, guesses as to which elements are hyperlinks are made pragmatically, for example, guessing that strings starting "http://" are links. Rob On 08/09/2016 14:04, "Nikolaos Beredimas" <[email protected]> wrote: I have a method that does a SPARQL select query and returns results in XML, JSON and CSV using outputAsCSV <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSetFormatter.html#outputAsCSV-java.io.OutputStream-org.apache.jena.query.ResultSet-> (OutputStream <http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true> outStream, ResultSet <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSet.html> resultSet) outputAsJSON <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSetFormatter.html#outputAsJSON-java.io.OutputStream-org.apache.jena.query.ResultSet-> (OutputStream <http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true> outStream, ResultSet <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSet.html> resultSet) outputAsXML <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSetFormatter.html#outputAsXML-java.io.OutputStream-org.apache.jena.query.ResultSet-> (OutputStream <http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true> outStream, ResultSet <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSet.html> qresults) When trying to unit test it I have a problem with the CSV case. I have tried ResultSetCompare <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/sparql/resultset/ResultSetCompare.html#ResultSetCompare--> .equalsByTerm <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/sparql/resultset/ResultSetCompare.html#equalsByTerm-org.apache.jena.query.ResultSet-org.apache.jena.query.ResultSet-> (ResultSet <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSet.html> rs1, ResultSet <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSet.html> rs2) ResultSetCompare <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/sparql/resultset/ResultSetCompare.html#ResultSetCompare--> .equalsByValue <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/sparql/resultset/ResultSetCompare.html#equalsByValue-org.apache.jena.query.ResultSet-org.apache.jena.query.ResultSet-> (ResultSet <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSet.html> rs1, ResultSet <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSet.html> rs2) ResultSetCompare <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/sparql/resultset/ResultSetCompare.html#ResultSetCompare--> .isomorphic <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/sparql/resultset/ResultSetCompare.html#isomorphic-org.apache.jena.query.ResultSet-org.apache.jena.query.ResultSet-> (ResultSet <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSet.html> rs1, ResultSet <https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/ResultSet.html> rs2) and they all fail to return true. Compared ResultSet objects are converted to ResultSetRewindable before comparing. JSON and XML cases work as expected (return true), but CSV fails. I am testing a very simple case with a ResultSet of just 4 rows. Using Jena 2.11.0 Any thoughts? Nikos.
