JSON-具有可选属性的 LD 框架?

JSON-LD framing with optional properties?

如何在 JSON-LD 上下文中将某些属性定义为 "optional"?

我创建了问题的简单示例。这里也是一样example in JSON-LD Playground。这是示例数据:

{
  "@context": {
    "ex": "http://example.org/ex#",
    "foaf": "http://xmlns.com/foaf/0.1/",
    "frapo": "http://purl.org/cerif/frapo/",
    "owl": "http://www.w3.org/2002/07/owl#",
    "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
    "xsd": "http://www.w3.org/2001/XMLSchema#"
  },
  "@graph": [
    {
      "@id": "ex:Organization_1",
      "@type": "foaf:Organisation",
      "foaf:member": [
        {
          "@id": "ex:Person_1"
        },
        {
          "@id": "ex:Person_2"
        }
      ],
      "frapo:funds": [
        {
          "@id": "ex:Project_1"
        },
        {
          "@id": "ex:Project_2"
        }
      ]
    },
    {
      "@id": "ex:Person_2",
      "@type": "foaf:Person",
      "foaf:currentProject": {
        "@id": "ex:Project_2"
      },
      "foaf:name": "Jack"
    },
    {
      "@id": "ex:Project_2",
      "@type": "foaf:Project",
      "foaf:name": "Small project 2"
    },
    {
      "@id": "ex:Project_1",
      "@type": "foaf:Project",
      "foaf:name": "Big project 1"
    },
    {
      "@id": "ex:Person_1",
      "@type": "foaf:Person",
      "foaf:name": "Bill",
      "foaf:pastProject": [
        {
          "@id": "ex:Project_1"
        },
        {
          "@id": "ex:Project_2"
        }
      ]
    }
  ]
}

我希望Organization为主节点,如:

foaf:组织

为了创建这样的结构,我创建了框架:

{
 "@context": {
  "ex": "http://example.org/ex#",
  "foaf": "http://xmlns.com/foaf/0.1/",
  "owl": "http://www.w3.org/2002/07/owl#",
  "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
  "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
  "xsd": "http://www.w3.org/2001/XMLSchema#",
  "frapo": "http://purl.org/cerif/frapo/"
},
"@type": "foaf:Organisation",
"foaf:member": {
"foaf:currentProject": {
  "@embed": false
},
"foaf:pastProject": {
  "@embed": false
 }
},
"frapo:funds": {}
}

现在的问题是 foaf:member 结果是 "null",如果您删除这些项目关系,项目将嵌入到 Person 实例中。

改用这个框架试试:

{
    "@context": {
        "ex": "http://example.org/ex#",
        "foaf": "http://xmlns.com/foaf/0.1/",
        "owl": "http://www.w3.org/2002/07/owl#",
        "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
        "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
        "xsd": "http://www.w3.org/2001/XMLSchema#",
        "frapo": "http://purl.org/cerif/frapo/"
    },
    "@type": "foaf:Organisation",
    "foaf:member": {
        "foaf:currentProject": {
            "@default": [],
            "@embed": false
        },
        "foaf:pastProject": {
            "@default": [],
            "@embed": false
        }
    },
    "frapo:funds": {}
}