Java中序列化JSON到JSON-LD的代码示例?

我有一个任务,虽然我需要将以JSONforms表示的大量数据转换为JSON-LD。 我想用这个 JSON-LD Java实现来做这个,但我不明白,我该怎么办。

我在网站上观看过教程并在互联网上阅读有关JSON-LD的内容,但还不了解最简单的事情:如何将JSON转换为JSON LD?

例如,我在JSON中有这个代码:

{ "name" : "Andreas", "age" : 20, "profession" : "student", "personalWebsite" : "example.com" } 

那我该怎么办? 像context.add(“example.com”)这样的东西?

 InputStream inputStream = new FileInputStream("C:\Users\Albert\input.json"); Object jsonObject = JsonUtils.fromInputStream(inputStream); Map context = new HashMap(); JsonLdOptions options = new JsonLdOptions(); 

在数据中添加“@context”条目。

 { "name" : "Andreas", "age" : 20, "profession" : "student", "personalWebsite" : "example.com", "@context":"http://schema.org/" } 

您的JSON-LD处理器将完成剩下的工作(从0.9版开始)

作为测试,您可以将您的json转换为rdf。

 package overflow.stack2449461; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.StringWriter; import java.util.Collection; import org.eclipse.rdf4j.model.Statement; import org.eclipse.rdf4j.rio.RDFFormat; import org.eclipse.rdf4j.rio.RDFHandlerException; import org.eclipse.rdf4j.rio.RDFParser; import org.eclipse.rdf4j.rio.RDFWriter; import org.eclipse.rdf4j.rio.Rio; import org.eclipse.rdf4j.rio.helpers.StatementCollector; public class Test { @org.junit.Test public void testForYourCode() { String data = "{\"name\" : \"Andreas\",\"age\" : 20,\"profession\" : \"student\", \"personalWebsite\" : \"example.com\",\"@context\": \"http://schema.org/\"}"; try (InputStream in = new ByteArrayInputStream(data.getBytes("utf-8"))) { String dataAsRdf = readRdfToString(in, RDFFormat.JSONLD, RDFFormat.NTRIPLES, ""); System.out.println(dataAsRdf); } catch (Exception e) { throw new RuntimeException(e); } } /** * @param in * a rdf input stream * @param inf * the rdf format of the input stream * @param outf * the output format * @param baseUrl * usually the url of the resource * @return a string representation */ public static String readRdfToString(InputStream in, RDFFormat inf, RDFFormat outf, String baseUrl) { Collection myGraph = null; myGraph = readRdfToGraph(in, inf, baseUrl); return graphToString(myGraph, outf); } /** * @param inputStream * an Input stream containing rdf data * @param inf * the rdf format * @param baseUrl * see sesame docu * @return a Graph representing the rdf in the input stream */ public static Collection readRdfToGraph(final InputStream inputStream, final RDFFormat inf, final String baseUrl) { try { final RDFParser rdfParser = Rio.createParser(inf); final StatementCollector collector = new StatementCollector(); rdfParser.setRDFHandler(collector); rdfParser.parse(inputStream, baseUrl); return collector.getStatements(); } catch (final Exception e) { throw new RuntimeException(e); } } /** * Transforms a graph to a string. * * @param myGraph * a sesame rdf graph * @param outf * the expected output format * @return a rdf string */ public static String graphToString(Collection myGraph, RDFFormat outf) { StringWriter out = new StringWriter(); RDFWriter writer = Rio.createWriter(outf, out); try { writer.startRDF(); for (Statement st : myGraph) { writer.handleStatement(st); } writer.endRDF(); } catch (RDFHandlerException e) { throw new RuntimeException(e); } return out.getBuffer().toString(); } } 

用pom.xml

   org.eclipse.rdf4j rdf4j-runtime 2.2 pom   com.github.jsonld-java jsonld-java 0.10.0  

它会将您的json字符串打印为rdf NTRIPLES

 _:b0  "20"^^ . _:b0  "Andreas" . _:b0  "example.com" . _:b0  "student" .