The @vocab prefix is dropped by Jena when parsing JsonLD.
An empty prefix is correctly translated into @vocab during serialization, but 
is lost during deserialization.
Below code demonstrates the point.

    public static void main(String... args) {
        String base = "http://www.ns.com/base/";;
        String prefix = "http://www.ns.com/prefix/";;

        Model m = ModelFactory.createDefaultModel();
        m.setNsPrefix("", base);
        m.setNsPrefix("prefix", prefix);

        m.add(m.createResource(base + "foo"), m.createProperty(prefix + "bar"), 
m.createResource(base + "baz"));
        String jsonLD = serializeJsonLD(m);
        System.out.println(jsonLD);

        InputStream in = new ByteArrayInputStream(jsonLD.getBytes());
        Model m2 = ModelFactory.createDefaultModel().read(in, null, "jsonld");
        System.out.println(serializeJsonLD(m2));
    }

    public static String serializeJsonLD(Model m) {
        OutputStream out = new ByteArrayOutputStream();
        m.write(out, "jsonld");
        return out.toString();
    }

>From what I can see, jsonld-java is intentionally ignoring the @vocab key at 
>line 277 of Context.java.
    
https://github.com/jsonld-java/jsonld-java/blob/master/core/src/main/java/com/github/jsonldjava/core/Context.java

I'm not sure if this is a bug in jsonld-java, or intentional behavior from a 
jsonld perspective that Jena should work around e.g. in JsonLDReader?

Reply via email to