繁体   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