|
From: <mrp...@us...> - 2014-03-18 18:59:06
|
Revision: 7996
http://sourceforge.net/p/bigdata/code/7996
Author: mrpersonick
Date: 2014-03-18 18:59:02 +0000 (Tue, 18 Mar 2014)
Log Message:
-----------
added support for a JSON to RDF parser. ticket 862
Modified Paths:
--------------
branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/ServiceProviderHook.java
branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONWriter.java
branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONWriterFactoryForConstruct.java
branches/RDR/bigdata-rdf/src/resources/service-providers/META-INF/services/org.openrdf.rio.RDFParserFactory
branches/RDR/bigdata-war/src/html/js/workbench.js
Added Paths:
-----------
branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONParser.java
branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONParserFactory.java
branches/RDR/bigdata-sails/lib/jackson-core-2.3.3-20140314.203554-3.jar
Modified: branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/ServiceProviderHook.java
===================================================================
--- branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/ServiceProviderHook.java 2014-03-18 18:16:29 UTC (rev 7995)
+++ branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/ServiceProviderHook.java 2014-03-18 18:59:02 UTC (rev 7996)
@@ -38,6 +38,7 @@
import org.openrdf.rio.RDFWriterRegistry;
import com.bigdata.rdf.model.StatementEnum;
+import com.bigdata.rdf.rio.json.BigdataSPARQLResultsJSONParserFactory;
import com.bigdata.rdf.rio.json.BigdataSPARQLResultsJSONWriterFactoryForConstruct;
import com.bigdata.rdf.rio.json.BigdataSPARQLResultsJSONWriterFactoryForSelect;
import com.bigdata.rdf.rio.ntriples.BigdataNTriplesParserFactory;
@@ -118,16 +119,22 @@
r.add(new BigdataNTriplesParserFactory());
- // subclassed the turtle parser to allow for fully numeric bnode ids
+ // subclassed the turtle parser for RDR
r.add(new BigdataTurtleParserFactory());
+ /*
+ * Allows parsing of JSON SPARQL Results with an {s,p,o,[c]} header.
+ * RDR-enabled.
+ */
+ r.add(new BigdataSPARQLResultsJSONParserFactory());
+
}
{
final TupleQueryResultWriterRegistry r = TupleQueryResultWriterRegistry.getInstance();
- // add our custom RDR-enabled JSON writer
+ // add our custom RDR-enabled JSON writer (RDR-enabled)
r.add(new BigdataSPARQLResultsJSONWriterFactoryForSelect());
}
@@ -139,8 +146,10 @@
// r.add(new BigdataRDFXMLWriterFactory());
+ // RDR-enabled
r.add(new BigdataTurtleWriterFactory());
+ // RDR-enabled
r.add(new BigdataSPARQLResultsJSONWriterFactoryForConstruct());
}
Added: branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONParser.java
===================================================================
--- branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONParser.java (rev 0)
+++ branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONParser.java 2014-03-18 18:59:02 UTC (rev 7996)
@@ -0,0 +1,574 @@
+/**
+Copyright (C) SYSTAP, LLC 2006-2014. All rights reserved.
+
+Contact:
+ SYSTAP, LLC
+ 4501 Tower Road
+ Greensboro, NC 27410
+ lic...@bi...
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; version 2 of the License.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+package com.bigdata.rdf.rio.json;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.Reader;
+
+import org.apache.log4j.Logger;
+import org.openrdf.model.Resource;
+import org.openrdf.model.Statement;
+import org.openrdf.model.URI;
+import org.openrdf.model.Value;
+import org.openrdf.model.ValueFactory;
+import org.openrdf.rio.RDFFormat;
+import org.openrdf.rio.RDFHandlerException;
+import org.openrdf.rio.RDFParseException;
+import org.openrdf.rio.helpers.RDFParserBase;
+
+import com.bigdata.rdf.model.BigdataStatement;
+import com.bigdata.rdf.model.BigdataValueFactory;
+import com.bigdata.rdf.model.BigdataValueFactoryImpl;
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonToken;
+
+/**
+ * RDF parser for JSON SPARQL Results files that have the variables (s, p, o,
+ * and optionally c) in the header.
+ */
+public class BigdataSPARQLResultsJSONParser extends RDFParserBase {
+
+ protected static final transient Logger log =
+ Logger.getLogger(BigdataSPARQLResultsJSONParser.class);
+
+
+ private LineNumberReader lineReader;
+
+ private BigdataValueFactory vf;
+
+ /**
+ * Default ctor uses a BigdataValueFactory with a namespace of "". Used
+ * for testing.
+ */
+ public BigdataSPARQLResultsJSONParser() {
+ this(BigdataValueFactoryImpl.getInstance(""));
+ }
+
+ /**
+ * Construct a parser with the supplied BigdataValueFactory.
+ */
+ public BigdataSPARQLResultsJSONParser(final BigdataValueFactory vf) {
+ super(vf);
+
+ this.vf = vf;
+ }
+
+ /**
+ * Set the value factory. Must be a BigdataValueFactory because of the
+ * RDR syntax support.
+ */
+ public void setValueFactory(final ValueFactory vf) {
+ if (vf instanceof BigdataValueFactory) {
+ this.vf = (BigdataValueFactory) vf;
+ } else {
+ throw new IllegalArgumentException();
+ }
+ }
+
+ /**
+ * Returns {@link BigdataSPARQLResultsJSONParserFactory#JSON}.
+ */
+ @Override
+ public RDFFormat getRDFFormat() {
+
+ return BigdataSPARQLResultsJSONParserFactory.JSON;
+
+ }
+
+ /**
+ * Parse the supplied input stream into RDF.
+ */
+ @Override
+ public void parse(final InputStream is, final String baseURI) throws IOException,
+ RDFParseException, RDFHandlerException {
+
+ parse(new InputStreamReader(is), baseURI);
+
+ }
+
+ /**
+ * Parse the supplied reader into RDF.
+ */
+ @Override
+ public void parse(final Reader r, final String baseURI) throws IOException,
+ RDFParseException, RDFHandlerException {
+
+ lineReader = new LineNumberReader(r);
+ // Start counting lines at 1:
+ lineReader.setLineNumber(1);
+
+ // read graph from JSON in request
+
+ final JsonFactory factory = new JsonFactory();
+
+ final JsonParser parser = factory.createJsonParser(lineReader);
+
+// final JsonParser parser = Json.createParser(lineReader);
+
+ JsonToken event = parser.nextToken();
+
+ if (event != JsonToken.START_OBJECT) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !(parser.getCurrentName().equals("head"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.START_OBJECT) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !(parser.getCurrentName().equals("vars"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.START_ARRAY) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING && !(parser.getCurrentName().equals("s"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING && !(parser.getCurrentName().equals("p"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING && !(parser.getCurrentName().equals("o"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event == JsonToken.VALUE_STRING) {
+
+ if (!(parser.getCurrentName().equals("c"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ }
+
+ if (event != JsonToken.END_ARRAY) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.END_OBJECT) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !(parser.getCurrentName().equals("results"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.START_OBJECT) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !(parser.getCurrentName().equals("bindings"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.START_ARRAY) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+
+// boolean startingBindings = false;
+// boolean breakLoop = false;
+//
+// while (parser.hasNext()) {
+// JsonToken event = parser.nextToken();
+// switch (event) {
+// case START_ARRAY:
+// if (startingBindings)
+// breakLoop = true;
+// case END_ARRAY:
+// case START_OBJECT:
+// case END_OBJECT:
+// case VALUE_FALSE:
+// case VALUE_NULL:
+// case VALUE_TRUE:
+// System.err.println(event.toString());
+// break;
+// case KEY_NAME:
+// if (parser.getString().equals("bindings"))
+// startingBindings = true;
+// System.err.println(event.toString() + " "
+// + parser.getString());
+// break;
+// case VALUE_STRING:
+// case VALUE_NUMBER:
+// System.err.println(event.toString() + " "
+// + parser.getString());
+// break;
+// }
+// if (breakLoop)
+// break;
+// }
+
+ rdfHandler.startRDF();
+
+ Statement stmt;
+ while ((stmt = parseStatement(parser)) != null) {
+
+ if (log.isDebugEnabled())
+ log.debug(stmt);
+
+ rdfHandler.handleStatement(stmt);
+
+ }
+
+ rdfHandler.endRDF();
+
+ }
+
+ /**
+ * Parse a statement from the JSON stream.
+ */
+ private final BigdataStatement parseStatement(
+ final JsonParser parser)
+ throws RDFParseException, JsonParseException, IOException {
+
+ JsonToken event = parser.nextToken();
+
+ if (event == null || event == JsonToken.END_ARRAY) {
+
+ return null;
+
+ }
+
+ if (event != JsonToken.START_OBJECT) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !(parser.getCurrentName().equals("s"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ final Resource s = (Resource) parseValue(parser);
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !(parser.getCurrentName().equals("p"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ final URI p = (URI) parseValue(parser);
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !(parser.getCurrentName().equals("o"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ final Value o = parseValue(parser);
+
+ event = parser.nextToken();
+
+ switch (event) {
+ case END_OBJECT:
+ return vf.createStatement(s, p, o);
+ case FIELD_NAME:
+ if (!(parser.getCurrentName().equals("c"))) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+ final Resource c = (Resource) parseValue(parser);
+ event = parser.nextToken();
+ if (event != JsonToken.END_OBJECT) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+ return vf.createStatement(s, p, o, c);
+ default:
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ // unreachable code
+ return null;
+
+ }
+
+ /**
+ * Parse a value from the JSON stream.
+ */
+ protected Value parseValue(final JsonParser parser)
+ throws RDFParseException, JsonParseException, IOException {
+
+ JsonToken event = parser.nextToken();
+
+ if (event != JsonToken.START_OBJECT) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !parser.getCurrentName().equals("type")) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ final String type = parser.getText();
+
+ Value val = null;
+
+ if ("sid".equals(type)) {
+
+ val = parseSid(parser);
+
+ } else if ("uri".equals(type)) {
+
+ val = parseURI(parser);
+
+ } else if ("bnode".equals(type)) {
+
+ val = parseBNode(parser);
+
+ } else if ("literal".equals(type)) {
+
+ val = parseLiteral(parser);
+
+ } else if ("typed-literal".equals(type)) {
+
+ val = parseTypedLiteral(parser);
+
+ } else {
+
+ reportFatalError("unexpected parse event: " + event);
+
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.END_OBJECT) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ return val;
+
+ }
+
+ /**
+ * Parse a sid from the JSON stream.
+ */
+ protected Value parseSid(final JsonParser parser)
+ throws RDFParseException, JsonParseException, IOException {
+
+ JsonToken event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !parser.getCurrentName().equals("value")) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ final BigdataStatement stmt = parseStatement(parser);
+
+ return vf.createBNode(stmt);
+
+ }
+
+ /**
+ * Parse a URI from the JSON stream.
+ */
+ protected Value parseURI(final JsonParser parser)
+ throws RDFParseException, JsonParseException, IOException {
+
+ JsonToken event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !parser.getCurrentName().equals("value")) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ return vf.createURI(parser.getText());
+
+ }
+
+ /**
+ * Parse a bnode from the JSON stream.
+ */
+ protected Value parseBNode(final JsonParser parser)
+ throws RDFParseException, JsonParseException, IOException {
+
+ JsonToken event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !parser.getCurrentName().equals("value")) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ return vf.createBNode(parser.getText());
+
+ }
+
+ /**
+ * Parse a plain literal or language-tagged literal from the JSON stream.
+ */
+ protected Value parseLiteral(final JsonParser parser)
+ throws RDFParseException, JsonParseException, IOException {
+
+ JsonToken event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME)
+ reportFatalError("unexpected parse event: " + event);
+
+ if (parser.getCurrentName().equals("xml:lang")) {
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ final String lang = parser.getText();
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !parser.getCurrentName().equals("value")) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ return vf.createLiteral(parser.getText(), lang);
+
+ } else if (parser.getCurrentName().equals("value")) {
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ return vf.createLiteral(parser.getText());
+
+ } else {
+
+ reportFatalError("unexpected parse event: " + event);
+
+ // unreachable code
+ return null;
+
+ }
+
+ }
+
+ /**
+ * Parse a typed literal from the JSON stream.
+ */
+ protected Value parseTypedLiteral(final JsonParser parser)
+ throws RDFParseException, JsonParseException, IOException {
+
+ JsonToken event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !parser.getCurrentName().equals("datatype")) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ final URI datatype = vf.createURI(parser.getText());
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.FIELD_NAME && !parser.getCurrentName().equals("value")) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ event = parser.nextToken();
+
+ if (event != JsonToken.VALUE_STRING) {
+ reportFatalError("unexpected parse event: " + event);
+ }
+
+ return vf.createLiteral(parser.getText(), datatype);
+
+ }
+
+ /**
+ * Overrides {@link RDFParserBase#reportFatalError(String)}, adding line
+ * number information to the error.
+ */
+ @Override
+ protected void reportFatalError(String msg) throws RDFParseException {
+
+ reportFatalError(msg, lineReader.getLineNumber(), -1);
+
+ }
+
+
+}
Property changes on: branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONParser.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONParserFactory.java
===================================================================
--- branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONParserFactory.java (rev 0)
+++ branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONParserFactory.java 2014-03-18 18:59:02 UTC (rev 7996)
@@ -0,0 +1,68 @@
+/**
+Copyright (C) SYSTAP, LLC 2006-2014. All rights reserved.
+
+Contact:
+ SYSTAP, LLC
+ 4501 Tower Road
+ Greensboro, NC 27410
+ lic...@bi...
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; version 2 of the License.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+package com.bigdata.rdf.rio.json;
+
+import java.nio.charset.Charset;
+
+import org.openrdf.rio.RDFFormat;
+import org.openrdf.rio.RDFParser;
+import org.openrdf.rio.RDFParserFactory;
+import org.openrdf.rio.turtle.TurtleParser;
+
+/**
+ * An {@link RDFParserFactory} for Turtle parsers.
+ *
+ * @author Arjohn Kampman
+ * @openrdf
+ */
+public class BigdataSPARQLResultsJSONParserFactory implements RDFParserFactory {
+
+ public static final RDFFormat JSON = new RDFFormat(
+ "JSON", // name
+ "application/sparql-results+json", // mime-type
+ Charset.forName("UTF-8"), // charset
+ "json", // file extension
+ false, // supports namespaces
+ true // supports contexts
+ );
+
+ static {
+
+ RDFFormat.register(JSON);
+
+ }
+
+ /**
+ * Returns {@link RDFFormat#TURTLE}.
+ */
+ public RDFFormat getRDFFormat() {
+ return JSON;
+ }
+
+ /**
+ * Returns a new instance of {@link TurtleParser}.
+ */
+ public RDFParser getParser() {
+ return new BigdataSPARQLResultsJSONParser();
+ }
+}
Property changes on: branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONParserFactory.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONWriter.java
===================================================================
--- branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONWriter.java 2014-03-18 18:16:29 UTC (rev 7995)
+++ branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONWriter.java 2014-03-18 18:59:02 UTC (rev 7996)
@@ -107,15 +107,15 @@
writer.write(", ");
writeKey("value");
openBraces();
- writeKeyValue("sid-s", stmt.getSubject());
+ writeKeyValue("s", stmt.getSubject());
writeComma();
- writeKeyValue("sid-p", stmt.getPredicate());
+ writeKeyValue("p", stmt.getPredicate());
writeComma();
- writeKeyValue("sid-o", stmt.getObject());
+ writeKeyValue("o", stmt.getObject());
if (stmt.getContext() != null) {
writeComma();
- writeKeyValue("sid-c", stmt.getContext());
+ writeKeyValue("c", stmt.getContext());
}
closeBraces();
@@ -469,7 +469,7 @@
@Override
public RDFFormat getRDFFormat() {
- return BigdataSPARQLResultsJSONWriterFactoryForConstruct.JSON;
+ return BigdataSPARQLResultsJSONParserFactory.JSON;
}
}
Modified: branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONWriterFactoryForConstruct.java
===================================================================
--- branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONWriterFactoryForConstruct.java 2014-03-18 18:16:29 UTC (rev 7995)
+++ branches/RDR/bigdata-rdf/src/java/com/bigdata/rdf/rio/json/BigdataSPARQLResultsJSONWriterFactoryForConstruct.java 2014-03-18 18:59:02 UTC (rev 7996)
@@ -7,7 +7,6 @@
import java.io.OutputStream;
import java.io.Writer;
-import java.nio.charset.Charset;
import org.openrdf.query.resultio.TupleQueryResultFormat;
import org.openrdf.query.resultio.TupleQueryResultWriterFactory;
@@ -23,26 +22,11 @@
*/
public class BigdataSPARQLResultsJSONWriterFactoryForConstruct implements RDFWriterFactory {
- public static final RDFFormat JSON = new RDFFormat(
- "JSON", // name
- "application/sparql-results+json", // mime-type
- Charset.forName("UTF-8"), // charset
- "json", // file extension
- false, // supports namespaces
- true // supports contexts
- );
-
- static {
-
- RDFFormat.register(JSON);
-
- }
-
/**
* Returns {@link TupleQueryResultFormat#JSON}.
*/
public RDFFormat getRDFFormat() {
- return JSON;
+ return BigdataSPARQLResultsJSONParserFactory.JSON;
}
/**
Modified: branches/RDR/bigdata-rdf/src/resources/service-providers/META-INF/services/org.openrdf.rio.RDFParserFactory
===================================================================
--- branches/RDR/bigdata-rdf/src/resources/service-providers/META-INF/services/org.openrdf.rio.RDFParserFactory 2014-03-18 18:16:29 UTC (rev 7995)
+++ branches/RDR/bigdata-rdf/src/resources/service-providers/META-INF/services/org.openrdf.rio.RDFParserFactory 2014-03-18 18:59:02 UTC (rev 7996)
@@ -1,3 +1,4 @@
com.bigdata.rdf.rio.nquads.NQuadsParserFactory
com.bigdata.rdf.rio.ntriples.BigdataNTriplesParserFactory
com.bigdata.rdf.rio.turtle.BigdataTurtleParserFactory
+com.bigdata.rdf.rio.json.BigdataSPARQLResultsJSONParserFactory
\ No newline at end of file
Added: branches/RDR/bigdata-sails/lib/jackson-core-2.3.3-20140314.203554-3.jar
===================================================================
(Binary files differ)
Index: branches/RDR/bigdata-sails/lib/jackson-core-2.3.3-20140314.203554-3.jar
===================================================================
--- branches/RDR/bigdata-sails/lib/jackson-core-2.3.3-20140314.203554-3.jar 2014-03-18 18:16:29 UTC (rev 7995)
+++ branches/RDR/bigdata-sails/lib/jackson-core-2.3.3-20140314.203554-3.jar 2014-03-18 18:59:02 UTC (rev 7996)
Property changes on: branches/RDR/bigdata-sails/lib/jackson-core-2.3.3-20140314.203554-3.jar
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: branches/RDR/bigdata-war/src/html/js/workbench.js
===================================================================
--- branches/RDR/bigdata-war/src/html/js/workbench.js 2014-03-18 18:16:29 UTC (rev 7995)
+++ branches/RDR/bigdata-war/src/html/js/workbench.js 2014-03-18 18:59:02 UTC (rev 7996)
@@ -867,7 +867,7 @@
/* Utility functions */
function getSID(binding) {
- return '<< <' + binding.value['sid-s'].value + '>\n<' + binding.value['sid-p'].value + '>\n<' + binding.value['sid-o'].value + '> >>';
+ return '<<\n <' + binding.value['s'].value + '>,\n<' + binding.value['p'].value + '>,\n <' + binding.value['o'].value + '>\n>>';
}
function parseSID(sid) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|