2017-03-24 1 views
0

제 질문은 두 부분으로되어 있습니다 :
파트 1) 서버가 JSON-LD 인 데이터를 제공한다면이 JSON-LD를 소비하는 방법은 무엇입니까? 우리는 간단한 Json Parser를 사용할 수 있습니까?하지만 모든 키의 매핑을 가지고있는 "@context"때문에 작동하지 않을 것이라고 생각합니다.
2 부 데이터는 JSON-LD + Hydra (Hypermedia 기반 API를 만들기 위해)입니다. Hydra 부분은 Markus Lanthaler vocab과 같은 API 문서 또는 JSON-LD 응답 데이터와 함께 제공된다고 가정합니다. 데이터 (속성)를 가져 와서 해당 데이터를 사용하여 작업을 수행하는 방법.
Apache Jena가 작업을 수행하고 수행하는 작업을 수행한다고 생각했지만 여전히 확실하지 않습니다. 예, 그렇다면 Apache Jena가이 용도로 사용됩니까?
이 senario 고려에 대답하기 전에 :Java에서 하이퍼 미디어 기반 API를 만들기 위해 JSONLD 데이터 또는 JSONLD + Hydra를 사용하는 방법은 무엇입니까?

CLIENT <----via API---> CLIENT HELPER <----via API----> SERVER 

서버와 통신하려면, 클라이언트는 클라이언트 도우미를 통해 통신합니다.

CLIENT HELPER 및 SERVER 모두 JSON-LD에서 이해하고 통신 할 수 있습니다. CLIENT는 JSON 만 이해할 수 있습니다.

위의 시나리오에서 나는 CLIENT HELPER (기본 API 클라이언트) 부분을 구현하는 방법을 구현합니다. 평신도의 용어로 설명해주십시오.

편집 1)이 JSON-LD를 들어

{ 
    "@context": { 
       "@vocab" : "http://www.myorganisation.com/vocab/" 
       }, 
    "@id": "http://www.myorganisation.com/hydra/api/users/1", 
    "@type": "User", 
    "name": "Dhannan", 
    "age": 38, 
    "knows" : [ 
      { 
        "@id": "http://www.myorganisation.com/hydra/api/users/2", 
        "@type": "User", 
        "name": "Mrigika", 
        "age": 35 
      }, 
      { 
        "@id": "http://www.myorganisation.com/hydra/api/languages/1", 
        "@type": "Language", 
        "description": "English" 
      } 
    ] 
} 

자바 코드 :

HttpGet 요청 = 새로운 HttpGet ("http://data.dummy.jsonld/sampleUser.jsonld");
HttpClient client = HttpClientBuilder.create(). build();
HttpResponse response = client.execute (request);
개체 입력 = JsonUtils.fromInputStream (response.getEntity(). getContent());
JsonLdOptions options = new JsonLdOptions();
개체 rdf = JsonLdProcessor.toRDF (input, options);
RDFDataset rdfDataset = (RDFDataset) rdf;
System.out.println (rdfDataset);


jsonld-java

{ 
@default= 
    [ 
     { 
     subject={type=IRI, value=http://www.myorganisation.com/hydra/api/users/1}, 
     predicate={type=IRI, value=http://www.w3.org/1999/02/22-rdf-syntax-ns#type}, 
     object={type=IRI, value=http://www.myorganisation.com/vocab/User} 
     }, 
     { 
     subject={type=IRI, value=http://www.myorganisation.com/hydra/api/users/1}, 
     predicate={type=IRI, value=http://www.myorganisation.com/vocab/age}, 
     object={type=literal, value=38, datatype=http://www.w3.org/2001/XMLSchema#integer} 
     }, 
     { 
     subject={type=IRI, value=http://www.myorganisation.com/hydra/api/users/1}, 
     predicate={type=IRI, value=http://www.myorganisation.com/vocab/knows}, 
     object={type=IRI, value=http://www.myorganisation.com/hydra/api/users/2} 
     }, 
     { 
     subject={type=IRI, value=http://www.myorganisation.com/hydra/api/users/1}, 
     predicate={type=IRI, value=http://www.myorganisation.com/vocab/knows}, 
     object={type=IRI, value=http://www.myorganisation.com/hydra/api/languages/1} 
     }, 
     { 
     subject={type=IRI, value=http://www.myorganisation.com/hydra/api/users/1}, 
     predicate={type=IRI, value=http://www.myorganisation.com/vocab/name}, 
     object={type=literal, value=Dhannan, datatype=http://www.w3.org/2001/XMLSchema#string} 
     }, 
     { 
     subject={type=IRI, value=http://www.myorganisation.com/hydra/api/users/2}, 
     predicate={type=IRI, value=http://www.w3.org/1999/02/22-rdf-syntax-ns#type}, 
     object={type=IRI, value=http://www.myorganisation.com/vocab/User} 
     }, 
     { 
     subject={type=IRI, value=http://www.myorganisation.com/hydra/api/users/2}, 
     predicate={type=IRI, value=http://www.myorganisation.com/vocab/age}, 
     object={type=literal, value=35, datatype=http://www.w3.org/2001/XMLSchema#integer} 
     }, 
     { 
     subject={type=IRI, value=http://www.myorganisation.com/hydra/api/users/2}, 
     predicate={type=IRI, value=http://www.myorganisation.com/vocab/name}, 
     object={type=literal, value=Mrigika, datatype=http://www.w3.org/2001/XMLSchema#string} 
     }, 
     { 
     subject={type=IRI, value=http://www.myorganisation.com/hydra/api/languages/1}, 
     predicate={type=IRI, value=http://www.w3.org/1999/02/22-rdf-syntax-ns#type}, 
     object={type=IRI, value=http://www.myorganisation.com/vocab/Language} 
     }, 
     { 
     subject={type=IRI, value=http://www.myorganisation.com/hydra/api/languages/1}, 
     predicate={type=IRI, value=http://www.myorganisation.com/vocab/description}, 
     object={type=literal, value=English, datatype=http://www.w3.org/2001/XMLSchema#string} 
     } 
    ] 
} 

것은 내가이 데이터를 처리해야합니까 사용하여 응답은?

답변

0

1 부 서버가 JSON-LD 인 데이터를 제공하는 경우이 소비량은 JSON-LD입니까? 우리는 간단한 Json Parser를 사용할 수 있습니까? 그러나 모든 키 매핑을 가지고있는 "@context"때문에 이 작동하지 않을 것이라고 생각합니다.

서버를 제어하기 때문에 어떤 형식으로 데이터를 얻을지 정확히 알면 JSON으로 구문 분석 할 수 있습니다. 그렇지 않으면 JSON-LD 프로세서를 사용하여 구문 분석해야합니다. json-ld.org은 많은 오픈 소스 구현을 나열합니다.

2 부) 이제 데이터는 JSON-LD + Hydra (Hypermedia 기반 API를 만들기 위해)입니다. Hydra 파트가 Markus Lanthaler vocab과 같은 API 문서 또는 JSON-LD 응답 데이터와 함께 제공된다고 가정하십시오. 데이터 (속성)를 얻고 해당 데이터를 사용하여 작업을 수행하는 방법. 내가 아파치라고 생각했다 예나는 소비하고 행동을 취하는 일을하지만 여전히 확신 할 수 없다. , 그렇다면 아파치 예나가 이런 목적을위한 것인가?

모든 RDF 라이브러리/도구/프레임 워크가 이와 관련하여 도움이 될 것입니다. 또한보다 전문화 된 도구가 있습니다. 좀 봐 hydra-cg.com

+0

편집 : 1 질문을 참조하십시오. 같은 방법으로 전달하려고 했습니까? 나는 여전히 히드라 파트에 대해 알아 냈습니다. 나중에 히드라 파트로 올 것입니다. – Badman

관련 문제