使用 heracles.ts 提取 hydra:class 的属性或 hydra:collection 的成员

Extracting properties of a hydra:class or members of a hydra:collection with heracles.ts

我正在寻找有关使用来自自定义 Hydra endpoint requested with the reference client in TypeScript, Heracles.ts.

响应的 hydra:classhydra:collection/hydra:member 对象属性的指导

例如,考虑来自我的服务器的以下 JSON-LD 响应:

{
  "context": {...},
  "member": [
    {
      "@id": "example:2bfd5353-6842-48f7-9f8c-111474f57dfb",
      "@type": "schema:person",
      "label": "Person 1"
    },
    {
      "@id": "example:108d8384-a55a-4b21-8511-654fb3830d5f",
      "@type": "schema:person",
      "label": "Person 2"
    },
  ],
}

我可以得到这个响应并使用以下代码循环它:

const data = await Client.getResource(
  "http://example.com/api/persons"
);
for (const person of data.members) {
  const iri = person.iri;
  const label = person.label; // How can I do this?
}

我不知道如何从响应中提取 iritype 之外的属性。 Hydra 存储库中的文档和用例仅讨论诸如 对象(例如在 Use Case Draft 4 中)做某事之类的事情,而没有说明如何做。我也无法在回购中的测试和其他源代码中找到具体示例。

非常感谢任何帮助。

最好的, 丹尼尔

我在 Heracles GitHub 存储库上问过同样的问题,得到 answer 除了 Hydra 元数据之外的内容访问器需要手动实现,类似于:

const data = await Client.getResource(
  "http://localhost:4000/persons"
);
const graph = await jsonld.expand(await data.json());
for (const person of data.members) {
  const personResource = graph["@graph"].find(_ => _["@id"] === person.iri);
  const label = personResource["http://some.uri/vocab#label][0]["@value"];
}

来源:GitHub

上的 alien-mcl