2017-04-04 12 views
1

私は仕事がありますが、JSONの形式で表現されたデータをJSON-LDに変換する必要があります。私はthis JSON-LD Javaの実装でこれをやりたいのですが、どうすればよいのでしょうか。JSONからJavaのJSON-LDへのシリアル化のコード例

私はウェブサイトでチュートリアルを見て、インターネット上の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(); 

答えて

0

データに「@context」エントリを追加します。

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

あなたのJSON-LDのプロセッサを使用すると、RDFにあなたのJSONに変換することができます試験として

(バージョン0.9以降)、残りを行います。 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> 

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(); 
    } 

} 

それは

_: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" . 
RDF NTRIPLESとしてあなたのJSON文字列を出力します
関連する問題