2017-07-06 16 views
2

私のモデルには、代替配列としての値を持つプロパティがあります。これは、1つの値のみが選択される代替のコレクションを示します。 私はrdf:Altを使ってこれを行うためにRDF/XMLを使用していました。次の例を参照してくださいJSON-LDで選択肢のコレクションを表現する方法

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ex="http://ns.example.com/example/"> 
<rdf:Description> 
    <ex:prop1> 
     <rdf:Alt> 
      <rdf:li>100</rdf:li> 
      <rdf:li>120</rdf:li> 
      <rdf:li>130</rdf:li> 
     </rdf:Alt> 
    </ex:prop1> 
</rdf:Description> 
</rdf:RDF> 

しかし、今私はJSON-LDでも同じことをしたいと思います。 Altキー/配列/バッグW3Cによってarchaicとしてマークされている:私は実際に私は、RDFがあることが分かったオンラインコンバータでJSON-LDに上記のスニペットを変換しようとしたし、次の結果

{ 
    "@context": { 
    "ex": "http://ns.example.com/example/", 
    "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    }, 
    "@graph": [ 
    { 
     "@id": "_:g70327238021300", 
     "ex:prop1": { 
     "@id": "_:g70327280101680" 
     } 
    }, 
    { 
     "@id": "_:g70327280101680", 
     "@type": "rdf:Alt", 
     "rdf:_1": "100", 
     "rdf:_2": "120", 
     "rdf:_3": "130" 
    } 
    ] 
} 

を得ました。 JSON-LDには、順序付き配列と順序付けられていない配列の@listと@setがあります。だから "rdf:Alt"を@typeとして使用せずにJSON-LDでこれを行う方法はありますか?

答えて

0

RDFS

RDFSにおいて、(rdf:ListRDF ContainersRDF:Container)とRDF Collectionsが存在します。違いは、容器はが開けてであるのに対して、容器はが閉じてであることです。this questionも参照してください。

rdf:Containerには、rdf:Bag,rdf:Seqおよびrdf:Altの3種類があります。

(すなわちセマンティック)コンテナのこれらの種類の違いは、差はかなり実用的で正式ありません。違いは、消費者がデータを使って何を意図しているかにあります。this questionを参照してください。

厳密に言えば、RDFコレクションとRDFコンテナはどちらもRDFデータモデルの一部ではなく、特定のRDF語彙の要素です(このボキャブラリは非常に一般的ですが)。

JSON-LD

JSON-LDデータモデルはよくRDFと整列していない、例えば、一次クリエイターの一つのthis articleを参照。

  • JSON-LDは、オープン閉鎖を無視します。
  • JSON-LDは前述のの実用的な違いを無視します。
  • JSON-LDは、の順序がの順番になっています()。
  • JSON-LDは、以前のものとのこの違いを識別
    非別個別個(字句)との間の差を保持します。

マッピングRDFS 1.1から

The same resource may appear in a container more than once

The first member of the container, i.e. the value of the rdf:_1 property, is the default choice

したがって、一般に、rdf:Altの要素は一意ではなく、順序付けされています。 したがって、@listを使用する必要があります。ただし、の代替品が一意で順序付けられていない場合は、@setを使用できます。

他のケースでは、注文がない場合に注文を主張する上で害がないことに注意してください。

また、議論とモチベーションのためにISSUE-24も参照してください。

UPDATE

はい、JSON-LDデータモデル内実用(すなわち言語語用論に関連する)の​​違いを表現することは不可能です。例えば、rdf:Seqrdf:Altの違いを表現することは不可能です。これらの違いを表現したい場合は、ボキャブラリが必要です。

RDFSはそのような語彙の一種です。 JSON-LDをRDF抽象構文のシリアライズ形式として使用し、これまでのように"@type": "rdf:Alt"などを書きます。

JSON-LDの代理コード@idが多分混乱している可能性があります。ちょうどあなたのRDFに空白ノードを使用していないし、JSON-LDは、次のようになります。

{ 
    "@context": { 
    "ex": "http://example.com/example/", 
    "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    }, 
    "@graph": [ 
    { 
     "@id": "ex:object1", 
     "ex:availableOptions": { 
     "@id": "ex:optionsFor1" 
     } 
    }, 
    { 
     "@id": "ex:optionsFor1", 
     "@type": "rdf:Alt", 
     "rdf:_1": "100", 
     "rdf:_2": "120", 
     "rdf:_3": "130" 
    } 
    ] 
} 

別のオプションは、たとえばを別の語彙を使用することですschema.org。私は、この例では、正しいことはよく分からない:[リンク](https://stackoverflow.com/questions/29001433/how-rdfbag-rdfseq-and-rdfalt-is-different-ため

{ 
    "@context": {"schema": "http://schema.org/", 
       "adobe" : "http://ns.adobe.com/xap/1.0/smp/"}, 
    "@type": "schema:ChooseAction",    
    "@id": "adobe:price", 
    "schema:option": ["100", "120", "130"] 
} 
+0

感謝使用中/ 29012938#29012938)。あなたが言及したように、rdf:Alt/Seq/Bagは、基本的にデータと何をするのかをユーザに指示します。 rdf:Intの目的は、アイテムのコレクションから1つのアイテムが必要であることです。一方、rdf:Seqはすべての項目が必要な順序付きリストです。したがって、JSON-LDでこれらの両方に対して@listを使用している場合、ユーザーはこれらの2つの意図を区別できなくなります。 –

+0

@AnjanKaur、私はあなたを理解してうれしいです。 –

+0

ええ、私の目的のために@listは使用できません。この意図をユーザーに明確にする必要があるため。しかし、あなたはあなたの答えで "@リスト"を使うべきだと言いました。 –

1

rdf:liへの拡張rdf:_nは、RDF/XMLの機能であり、実際はrdf:Alt/Bag/Seqのネイティブサポートを提供する唯一の形式です。注意しておきますが、これらは古いものとみなされますので、JSON-LDなどの他のシリアライズでネイティブサポートを探すべきではありません。

RDFコンセプトで意味論的サポートを持ち、ほとんどのRDFシリアライゼーションで直接サポートされているRDFコレクション以外の情報収集方法については、Ordered List Ontologyなどのオントロジーを参照してください。 rdf:Alt構文ではなくセマンティクスを使用するセマンティクス。

たとえば、schema.orgにはChoose Actionがあります。これは、あなたのやりたいことに似ているようです。関連する投票行動も同様です。

関連する問題