JSON-LD с необязательными свойствами?

Как определить некоторые свойства как «необязательные» в контексте JSON-LD?

Я создал простой пример проблемы. Вот тот же пример в 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"
        }
      ]
    }
  ]
}

Я хочу, чтобы Организация была основным узлом, например:

foaf:Организация

  • участник: [{Person}, {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": {
  "@embed": false
},
"foaf:pastProject": {
  "@embed": false
 }
},
"frapo:funds": {}
}

Теперь проблема в том, что foaf:member оказывается «нулевым», и если вы удалите эти проекты отношений проекта, они будут встроены в экземпляры Person.


person amiika    schedule 03.08.2015    source источник


Ответы (1)


Вместо этого попробуйте использовать этот кадр:

{
    "@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": {}
}
person Markus Lanthaler    schedule 03.08.2015
comment
Он работает на игровой площадке JSON-LD, но по какой-то причине не работает с библиотекой JSON-LD-JAVA. - person amiika; 04.08.2015
comment
Но в любом случае СПАСИБО, я думаю, это также должно работать с JSONLD-JAVA. - person amiika; 04.08.2015