Создание контекста для JSON-LD

В качестве простого упражнения я хотел взять некоторые тестовые данные из небольшого приложения, которое у меня было, которое создавало пользовательскую запись в JSON, и превращало ее в JSON-LD, тестирование на игровой площадке JSON-LD.org дает некоторую помощь, но я не знаю, правильно ли я делаю.

Оригинал:

[
    {
        "Id": 1
        "Username": "Dave",
        "Colour":"green“
    }
]

Итак, у меня есть человек, у которого есть имя пользователя, идентификатор и соответствующий цвет.

Что у меня есть до сих пор:

{  
  "@context": {    
    "name": "http://schema.org/name",
    "Colour": {
      "@id": "http://dbpedia.org/ontology/Colour",
      "@type": "http://schema.org/Text",
      "@language": "en"
    }
  },
  "@type": "http://schema.org/Person",     
  "@Id": "http://example.com/player/1",
  "sameAs" : "https://www.facebook.com/DaveAlger",
  "Id": 1,
  "name": "David Alger",
  "Username": "Dave",  
  "Colour": "green" 
}

Итак, я объявляю, что это @type человека, и получаю URI @id.

Я также использую идею «sameAs», которую я однажды видел в блоге, но неясно, поддерживается ли она сразу.

Затем я попытался создать @context. Здесь я добавил имя и дал ссылку. Я пытался создать что-то и для «цвета». Я не уверен, что указывать на ссылку DBpedia о «цвете» и указывать @type и @language хорошо или нет.

Я полагаю, что последнее — это «имя пользователя», но оно кажется настолько внутренним для сайта, что вообще не имеет смысла «связывать» его.

Я знаю, что эти данные, возможно, даже не стоит связывать, это очень полезно для меня.


person Dave Alger    schedule 16.10.2015    source источник


Ответы (1)


Я не думаю, что http://dbpedia.org/ontology/Colour следует использовать таким образом. Это класс, а не свойство. Свойство с диапазоном http://dbpedia.org/ontology/Colour равно http://dbpedia.org/ontology/colour. (Тем не менее, я не уверен, действительно ли вы хотите, чтобы у человека был цвет, а не что-то, связанное с этим человеком.)

Если вы хотите указать язык цветных строк, вы не должны указывать тип данных, достаточно @language (если значение введено, оно больше не может иметь языка; используя @language, подразумевается, что значение является строкой ).

Вы используете @Id для указания URI узла, но он должен быть @id.

Свойства sameAs, Id и Username не определены в вашем @context.

  • Если вы собираетесь использовать свойство sameAs Schema.org, вы можете определить его так же, как вы сделали с name, но вы следует указать, что значение является URI:

    "sameAs": {
      "@id": "http://schema.org/sameAs",
      "@type": "@id"
    },
    
  • Для Username можно использовать свойство nick FOAF или, возможно, свойство alternateName сайта Schema.org.

  • Не знаю, какое свойство вы могли бы использовать для Id (зависит от вашего случая, полезно ли это вообще для других или актуально только для вашей внутренней системы).

person unor    schedule 17.10.2015
comment
Некоторые действительно хорошие и полезные моменты здесь я думаю. Интересно увидеть разницу между классом и свойством, это помогает. Это также привлекает внимание к чему-то еще: этот объект, который я указываю, является записью игрока, и у игрока есть цвет в игре, и этот игрок также является человеком (который может быть связан с человеком на Facebook), но является ли он неправильно тогда объявлять тип объекта как человека? Должна ли быть более тонкая связь? Типа, что этот игрок, у которого есть имя пользователя, также является человеком с таким же именем и связан с ним? - person Dave Alger; 19.10.2015
comment
@DaveAlger: Это хороший вопрос, но я думаю, что он слишком сложен, чтобы отвечать на него в комментарии (и для сайта полезнее иметь его в фактическом сообщении с ответом, за которое можно проголосовать / отредактировать), и я наверняка есть разные мнения по этому поводу. - person unor; 19.10.2015