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

我需要将一些以形式表示的数据转换JSONJSON-LD。我想使用此 JSON-LD Java实现来执行此操作,但我不明白该怎么办。

我看了几本教程,并JSON-LD在Internet上阅读了一些有关内容的文章,但不了解最简单的东西:如何转换JSONJSON-LD

例如,我在JSON中有以下代码:

{

"name" : "Andreas",

"age" : 20,

"profession" : "student",

"personalWebsite" : "example.com"

}

我现在应该怎么办?像context.add("example.com")什么?

InputStream inputStream = new FileInputStream("C:\Users\Username\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<Statement> 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<Statement> 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<Statement> 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

   <dependency>

<groupId>org.eclipse.rdf4j</groupId>

<artifactId>rdf4j-runtime</artifactId>

<version>2.2</version>

<type>pom</type>

</dependency>

<dependency>

<groupId>com.github.jsonld-java</groupId>

<artifactId>jsonld-java</artifactId>

<version>0.10.0</version>

</dependency>

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

_:b0 <http://schema.org/age> "20"^^<http://www.w3.org/2001/XMLSchema#integer> .

_:b0 <http://schema.org/name> "Andreas" .

_:b0 <http://schema.org/personalWebsite> "example.com" .

_:b0 <http://schema.org/profession> "student" .

以上是 Java中将JSON序列化为JSON-LD的代码示例? 的全部内容, 来源链接: utcz.com/qa/400922.html

回到顶部