Как манипулировать Json-ld?

У меня есть этот json-ld:

{ "@id":   "http://www.example.com/john-doe",
    "@type":   "http://xmlns.com/foaf/0.1/Person",
    "http://xmlns.com/foaf/0.1/name":   "John   Doe",
    "http://xmlns.com/foaf/0.1/age":   {
    "@value":   "42",
    "@kind":   "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"},
    "http://xmlns.com/foaf/0.1/knows" : [
      {   "@id":   "http://www.example.com/charlie-brown"   },
      {   "@id":   "http://www.example.com/jane-doe"   }
    ]
  }

Я должен написать контекст, чтобы приведенный ниже json-ld был действительным.

{ "@context" : "context to write....",
  "@id":   "john-doe",
  "@type":   "person",
  "name":   "John   Doe",
  "age":   "42",
  "knows":   ["charlie-brown", "jane-doe"]
}

Я написал решение, но оно неполное, и я не могу понять, как написать полное решение, надеюсь, что кто-то может мне помочь.


person Giovanni Fabbretti    schedule 10.02.2018    source источник
comment
1) Вы имеете в виду @type вместо @kind? Если нет, то откуда @kind? 2) Пожалуйста, поделитесь своим неполным решением, если это возможно. Что точно вы можете понять? 3) Должен ли ваш второй фрагмент работать точно так же или можно менять части?   -  person unor    schedule 11.02.2018


Ответы (1)


Чтобы получить результат, близкий к ваши требования.

Используйте это ссылка на пример на игровой площадке json-ld. Вот как будет выглядеть ваш документ со встроенным @context:

{
  "@context": {
    "name": {
      "@id": "http://xmlns.com/foaf/0.1/name"
    },
    "age": {
      "@id": "http://xmlns.com/foaf/0.1/age"
    },
    "knows": {
      "@id": "http://xmlns.com/foaf/0.1/knows",
      "@container": "@set"
    }
  },
 "@id": "john-doe",
 "@type": "person",
  "name": "John   Doe",
  "age": "42",
  "knows": [
    "charlie-brown",
    "jane-doe"
  ]
}

Вот так будет выглядеть рамка

{
  "@context": {
    "name": {
      "@id": "http://xmlns.com/foaf/0.1/name"
    },
    "age": {
      "@id": "http://xmlns.com/foaf/0.1/age"
    },
    "knows": {
      "@id": "http://xmlns.com/foaf/0.1/knows",
      "@container": "@set"
    }
  }
}

Это приведет к

{
  "@context": {
    "name": {
      "@id": "http://xmlns.com/foaf/0.1/name"
    },
    "age": {
      "@id": "http://xmlns.com/foaf/0.1/age"
    },
     "knows": {
      "@id": "http://xmlns.com/foaf/0.1/knows",
      "@container": "@set"
    }
  },
  "@graph": [
    {
      "@id": "john-doe",
      "@type": "https://json-ld.org/playground/person",
      "age": "42",
      "knows": [
        "charlie-brown",
        "jane-doe"
      ],
      "name": "John   Doe"
    }
  ]
}
person jschnasse    schedule 02.03.2018