我的問題有兩部分:
第1部分)如果服務器提供的數據是JSON-LD,那麼如何使用這個JSON-LD?我們可以使用簡單的Json解析器嗎?但我認爲它不會工作,因爲「@context」映射了每個鍵。
第2部分)現在數據是JSON-LD + Hydra(用於製作超媒體驅動的API)。假設Hydra部分是通過API文檔(如Markus Lanthaler vocab)或JSON-LD響應數據提供的。如何獲取數據(屬性)並使用該數據執行操作。
我以爲Apache Jena做這個工作來消費和執行操作,但我仍然不確定,如果是的話,Apache Jena是爲了這個目的,那麼它怎麼樣?
回答之前考慮這個塞納里奧:如何使用JSONLD數據或JSONLD + Hydra在Java中製作超媒體驅動的API?
CLIENT <----via API---> CLIENT HELPER <----via API----> SERVER
要與服務器通信,客戶端將通過客戶HELPER通信。
客戶端幫助者和服務器都可以理解和使用JSON-LD進行通信。 雖然CLIENT只能理解JSON。
在上面這個場景中,我實現了CLIENT HELPER(bascially 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請求=新HTTPGET( 「http://data.dummy.jsonld/sampleUser.jsonld」);
HttpClient client = HttpClientBuilder.create()。build();
HttpResponse response = client.execute(request);
Object input = 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}
}
]
}
我將不得不面對這一數據的反應如何?
請看編輯:1的問題。你是否試圖用同樣的方式表達?我仍然在想出九頭蛇的部分,以後我會再來。 – Badman