4

JSON-LD で HAL の概念を使用する方法はありますか?

現在の jsonld ドキュメントがあります。

{
    "@context": {
        "hal": "http://stateless.co/hal#",
        "schema": "http://schema.org",
        "_links": {
            "@id": "hal:link",
            "@container": "@index"
        }
    },
    "@type": ["schema:Person", "hal:Resource"],
    "name": "Jon Snow",
    "_links": {
        "self": {
            "href": "/users/123"
        }
    }
}

しかし、 にofなどhrefがあることを定義する方法がわかりません...@type@id

RDF(S) に基づいて HAL ボキャブを定義し、それを何らかの方法で jsonld ドキュメントの @context にインポートする方法はありますか?
(リンク関係、HTTP メソッド、受け入れられたメディア タイプ、言語、IRI テンプレート、入力フィールドなど、さまざまなプロパティを使用してハイパーリンクを記述しようとしています。そのため、@idリンクを記述するにはタイプだけでは不十分です。)

4

2 に答える 2

8

Tomasz が既に示唆したように、 Hydraは多かれ少なかれあなたが望むことを行うので、Hydraの使用を実際に検討する必要があります。質問に含めた例は、Hydra と JSON-LD を使用すると次のようになります。

{
    "@context": {
        "schema": "http://schema.org",
        "ex": "http://example.com/myvocab#"
    },
    "@id": "/users/123",
    "@type": [ "schema:Person", "hydra:Resource" ],
    "name": "Jon Snow",
    "ex:link": { "@id": "/another-resource" }        
}

「自己」リンクは必要ないので (@idすでに明示的に指定されています)、別のリンクを追加しましたex:link。したがってhttp://example.com/myvocab#link、そのリンク関係は であり、その「href」は/another-resourceです。そのリンク/プロパティをより詳細に説明する必要がある場合は、他の説明とまったく同じ方法でそれを定義するドキュメントを作成することで行うことができます (Tomasz も既に説明したように):

{
    "@context": {
        "ex": "http://example.com/myvocab#",
        "hydra": "http://www.w3.org/ns/hydra#"
    },
    "@id": "ex:link",
    "@type": "hydra:Link",
    "hydra:title": "My new link relation",
    "hydra:supportedOperation": [
       {
         "@type": "hydra:Operation",
         "hydra:method": "POST",
         "hydra:expects": ....
       }
    ]       
}

ご意見について

ところで。私は多かれ少なかれ Hydra ボキャブに精通していますが、リソースをサーバー側言語の実際のクラスとオブジェクトにマップし、操作パラメーターをそれらのオブジェクトに自動的に変換するという考えは好きではありません。Hydra 語彙を別の方法で使用することは可能かもしれませんが、それを試す時間はありません。

Hydra は単なる語彙です。それをどのように使用するかはあなた次第です。上記のHydraBundleについて話していると思います。それはそれを使用する1つの方法にすぎません。それが簡単に可能であることを示す概念実証にすぎません。ですから、それに惑わされないでください。

Hydra W3C Community Groupへの参加を歓迎します。これについては、メーリング リストで詳しく説明します。

免責事項: 私は Hydra の作成者であり、Hydra W3C コミュニティ グループの議長を務めています。

于 2014-06-27T15:05:44.613 に答える
2

Hydraに興味があると思います。あなたはそれを試しましたか?

ハイパーメディアのリンクや操作を説明する語彙です。単純な親リンクでどのように機能するかを次に示します

{
  "@context": {
    "schema": "http://schema.org",
    "parent": { 
       "@id": "/vocab#parent"
       "@type": "@id"
    }
  },
  "@id": "/users/123",
  "@type": "schema:Person",
  "name": "Jon Snow",
  "parent": "/users/Ned_Stark" 
}

ドメイン外のデータを表現に含める必要はないことに注意してください。代わりに、親の述語が何を意味するかを説明します

{
  "@context": "http://www.w3.org/ns/hydra/context.jsonld",
  "@id": "/vocab#parent",
  "@type": "hydra:Link"
}

クラスの操作 (HTTP メソッド、範囲、ドメインなど) とプロパティを記述することもできます。また、操作は表現に直接含めることも、クラスやプロパティに添付することもできます。

于 2014-06-26T09:47:54.693 に答える