Exemplo n.º 1
0
  @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);
    }
  }