Мой вопрос состоит из двух частей:
Часть 1) Если сервер предоставляет данные, которые являются JSON-LD, то как использовать этот JSON-LD? Можем ли мы использовать простой парсер Json? Но я не думаю, что он будет работать из-за "@context", в котором есть сопоставление всех ключей.
Часть 2) Теперь данные - это JSON-LD + Hydra (чтобы сделать API, управляемый Hypermedia). Предположим, что часть Гидры предоставляется через API-документацию, например словарь Маркуса Лантхалера или вместе с данными ответа JSON-LD. Как получить данные (свойства) и выполнить действие, используя эти данные.
Я думал, что Apache Jena выполняет эту работу, чтобы потреблять и выполнять действия, но все же я не уверен, Является ли Apache Йена предназначена для этой цели, если да, то как там дела?
Прежде чем отвечать, рассмотрите следующий вариант:
CLIENT <----via API---> CLIENT HELPER <----via API----> SERVER
Для связи с СЕРВЕРОМ, КЛИЕНТ будет общаться через ПОМОЩЬ КЛИЕНТУ.
CLIENT HELPER и SERVER могут понимать и общаться в JSON-LD. В то время как КЛИЕНТ может понимать только JSON.
В приведенном выше сценарии я реализую часть ПОМОЩИ КЛИЕНТУ (в основном 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"
}
]
}
Код JAVA:
HttpGet request = new HttpGet ("http://data.dummy.jsonld/sampleUser.jsonld ");
HttpClient client = HttpClientBuilder.create (). build ();
HttpResponse response = client.execute (запрос);
Входной объект объекта = JsonUtils.fromInputStream (response.getEntity (). getContent ( ));
JsonLdOptions options = new JsonLdOptions ();
Object 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}
}
]
}
Придется ли мне иметь дело с этими данными?