我的问题有两个部分:
Part 1) 如果服务器提供的数据是JSON-LD,那么如何使用这个JSON-LD?我们可以使用简单的Json Parser吗?但我不认为它会起作用,因为"@context"具有每个键的映射 .
Part 2) 现在数据是JSON-LD Hydra(用于制作超媒体驱动的API) . 假设Hydra部件通过API文档(如Markus Lanthaler vocab)或与JSON-LD响应数据一起提供 . 如何获取数据(属性)并使用该数据执行操作 .
我认为Apache Jena做的工作是消费和执行行动,但我仍然不确定, Is Apache Jena is for this purpose if yes then how is it doing?
在回答之前请考虑一下这种情况:
CLIENT <----via API---> CLIENT HELPER <----via API----> SERVER
要与SERVER通信,CLIENT将通过CLIENT HELPER进行通信 .
客户端HELPER和SERVER都可以在JSON-LD中理解和通信 . 虽然CLIENT只能理解JSON .
在上面这个场景中,我正在实现CLIENT HELPER(基本上是API CLIENT)部分如何实现该部分 . 请在外行的术语中解释 .
编辑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"
}
]
}
JAVA代码:
HttpGet request = new HttpGet(“http://data.dummy.jsonld/sampleUser.jsonld”);
HttpClient客户端= HttpClientBuilder.create() . build();
HttpResponse response = client.execute(request);
Object input = JsonUtils.fromInputStream(response.getEntity() . getContent());
JsonLdOptions options = new JsonLdOptions();
对象rdf = JsonLdProcessor.toRDF(输入,选项);
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}
}
]
}
我必须处理这些数据吗?
1 回答
如果您确切知道将以何种形式获取数据(例如,因为您控制服务器),则可以将其解析为JSON . 否则,您应该使用JSON-LD处理器来解析它 . json-ld.org列出了许多开源实现 .
每个RDF库/工具/框架都应该能够在这方面提供帮助 . 还有更专业的工具 . 看看hydra-cg.com