簡體   English   中英

JSON-LD緊湊操作屬性消歧

[英]JSON-LD compact operation property disambiguation

讓我們考慮一個沒有上下文的簡單JSON-LD文檔:

[
   {
      "@id": "http://stackoverflow.com/#users",
      "http://rdfs.org/sioc/ns#name": "SO Users",
      "http://xmlns.com/foaf/0.1/member":
      {
         "@id": "http://example.com/me#me"
      }
   },
   {
      "@id": "http://example.com/me#me",
      "http://xmlns.com/foaf/0.1/givenName": "Tomasz"
   }
]

我想在此文檔中添加一個@context以獲得如下內容:

{
   "@context": { /* what here? */ },
   "@graph": [
   {
      "@id": "http://stackoverflow.com/#users",
      "Name": "SO Users",
      "Members": [ "http://example.com/me#me" ]
   },
   {
      "@id": "http://example.com/me#me",
      "Name": "Tomasz"
   }]
}

這里的問題是foaf:givenName和sioc:name屬性都映射到json中的Name鍵。 手動創作此文檔不會有問題,因為可以使用嵌套的@context覆蓋屬性。

但是,使用JSON-LD規范定義的Compact操作是否可能? 還是將每個謂詞映射到明確屬性的唯一選項(在這種情況下,可以是Name和GivenName)

要使Name映射到每個對象中的不同IRI,將需要您在每個對象中有一個單獨的上下文,或一個主上下文,並覆蓋您希望它表示不同含義的位置。 但是,壓縮算法對整個文檔使用單個上下文,因此恐怕您無法使用標准算法來做到這一點。

您想要使用單獨的上下文的示例如下:

{
   "@context": {
      "Name": "http://rdfs.org/sioc/ns#name",
      "Members": "http://xmlns.com/foaf/0.1/member" },
   "@graph": [
   {
      "@id": "http://stackoverflow.com/#users",
      "Name": "SO Users",
      "Members": [ "http://example.com/me#me" ]
   },
   {
      "@context": {"Name": "http://xmlns.com/foaf/0.1/givenName"},
      "@id": "http://example.com/me#me",
      "Name": "Tomasz"
   }]
}

我們正在考慮一種框架功能,該功能允許在使用對象嵌入的文檔的不同框架中定義和使用上下文,但這只是目前的建議。

可以很好地測試不同算法的效果,如http://json-ld.org/playground所示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM