public Node asJsonLdNode()

in commons-rdf-jsonld-java/src/main/java/org/apache/commons/rdf/jsonldjava/JsonLdRDF.java [98:130]


    public Node asJsonLdNode(final RDFTerm term) {
        if (term instanceof JsonLdBlankNode) {
            final JsonLdBlankNode jsonLdBlankNode = (JsonLdBlankNode) term;
            if (jsonLdBlankNode.uniqueReference().startsWith(bnodePrefix)) {
                // Only return blank nodes 'as is' if they have the same prefix
                return jsonLdBlankNode.asJsonLdNode();
            }
        } else if (term instanceof JsonLdTerm) {
            // non-Bnodes can always be return as-is
            return ((JsonLdTerm) term).asJsonLdNode();
        }
        if (term instanceof IRI) {
            return new RDFDataset.IRI(((IRI) term).getIRIString());
        }
        if (term instanceof BlankNode) {
            final String ref = ((BlankNode) term).uniqueReference();
            if (ref.startsWith(bnodePrefix)) {
                // one of our own (but no longer a JsonLdBlankNode),
                // we can recover the label after our unique prefix
                return new RDFDataset.BlankNode(ref.replace(bnodePrefix, ""));
            }
            // The "foreign" unique reference might not be a valid bnode string,
            // we'll convert to a UUID
            final UUID uuid = UUID.nameUUIDFromBytes(ref.getBytes(StandardCharsets.UTF_8));
            return new RDFDataset.BlankNode("_:" + uuid);
        }
        if (term instanceof Literal) {
            final Literal literal = (Literal) term;
            return new RDFDataset.Literal(literal.getLexicalForm(), literal.getDatatype().getIRIString(),
                    literal.getLanguageTag().orElse(null));
        }
        throw new IllegalArgumentException("RDFTerm not instanceof IRI, BlankNode or Literal: " + term);
    }