@Override public void endRDF() throws RDFHandlerException { final SesameRDFParser serialiser = new SesameRDFParser(); try { Object output = JsonLdProcessor.fromRDF(model, serialiser); final JSONLDMode mode = getWriterConfig().get(JSONLDSettings.JSONLD_MODE); final JsonLdOptions opts = new JsonLdOptions(); // opts.addBlankNodeIDs = // getWriterConfig().get(BasicParserSettings.PRESERVE_BNODE_IDS); opts.setUseRdfType(getWriterConfig().get(JSONLDSettings.USE_RDF_TYPE)); opts.setUseNativeTypes(getWriterConfig().get(JSONLDSettings.USE_NATIVE_TYPES)); // opts.optimize = getWriterConfig().get(JSONLDSettings.OPTIMIZE); if (mode == JSONLDMode.EXPAND) { output = JsonLdProcessor.expand(output, opts); } // TODO: Implement inframe in JSONLDSettings final Object inframe = null; if (mode == JSONLDMode.FLATTEN) { output = JsonLdProcessor.frame(output, inframe, opts); } if (mode == JSONLDMode.COMPACT) { final Map<String, Object> ctx = new LinkedHashMap<String, Object>(); addPrefixes(ctx, model.getNamespaces()); final Map<String, Object> localCtx = new HashMap<String, Object>(); localCtx.put("@context", ctx); output = JsonLdProcessor.compact(output, localCtx, opts); } if (getWriterConfig().get(BasicWriterSettings.PRETTY_PRINT)) { JSONUtils.writePrettyPrint(writer, output); } else { JSONUtils.write(writer, output); } } catch (final JsonLdError e) { throw new RDFHandlerException("Could not render JSONLD", e); } catch (final JsonGenerationException e) { throw new RDFHandlerException("Could not render JSONLD", e); } catch (final JsonMappingException e) { throw new RDFHandlerException("Could not render JSONLD", e); } catch (final IOException e) { throw new RDFHandlerException("Could not render JSONLD", e); } }
@Test public void triplesTest() throws IOException, JsonLdError { final InputStream in = getClass().getClassLoader().getResourceAsStream("testfiles/product.jsonld"); final Object input = JSONUtils.fromInputStream(in); final ClerezzaTripleCallback callback = new ClerezzaTripleCallback(); final MGraph graph = (MGraph) JsonLdProcessor.toRDF(input, callback); for (final Triple t : graph) { System.out.println(t); } assertEquals("Graph size", 13, graph.size()); }
@Override public void read( InputStream in, String baseURI, ContentType ct, final StreamRDF output, Context context) { try { Object jsonObject = JSONUtils.fromInputStream(in); JSONLDTripleCallback callback = new JSONLDTripleCallback() { @Override // public Object call(Map<String, Object> dataset) { public Object call(RDFDataset dataset) { for (String gn : dataset.keySet()) { Object x = dataset.get(gn); if ("@default".equals(gn)) { @SuppressWarnings("unchecked") List<Map<String, Object>> triples = (List<Map<String, Object>>) x; for (Map<String, Object> t : triples) { Node s = createNode(t, "subject"); Node p = createNode(t, "predicate"); Node o = createNode(t, "object"); Triple triple = Triple.create(s, p, o); output.triple(triple); } } else { @SuppressWarnings("unchecked") List<Map<String, Object>> quads = (List<Map<String, Object>>) x; Node g = NodeFactory.createURI(gn); // Bnodes? for (Map<String, Object> q : quads) { Node s = createNode(q, "subject"); Node p = createNode(q, "subject"); Node o = createNode(q, "object"); output.triple(Triple.create(s, p, o)); } } } return null; } }; JSONLD.toRDF(jsonObject, callback); } catch (IOException e) { e.printStackTrace(); } catch (JSONLDProcessingError e) { e.printStackTrace(); } }
@Test public void curiesInContextTest() throws IOException, JsonLdError { final InputStream in = getClass().getClassLoader().getResourceAsStream("testfiles/curies-in-context.jsonld"); final Object input = JSONUtils.fromInputStream(in); final ClerezzaTripleCallback callback = new ClerezzaTripleCallback(); final MGraph graph = (MGraph) JsonLdProcessor.toRDF(input, callback); for (final Triple t : graph) { System.out.println(t); assertTrue( "Predicate got fully expanded", t.getPredicate().getUnicodeString().startsWith("http")); } assertEquals("Graph size", 3, graph.size()); }