2015-03-03 3 views
4

Я хочу, чтобы создать коллекцию людей в формате JSON-LD, но мне нужно, чтобы сохранить некоторые ключи вместо того, чтобы использовать массивы, так что я попытался это первым:Правильно ли это использование JSON-LD Index Maps?

{ 
    "@context" : { 
    "@base" : "http://www.example.com/data/", 
    "@vocab" : "http://www.example.com/vocab#", 
    "name" : "schema:name", 
    "people" : { 
     "@container" : "@index", 
     "@id" : "people" 
    }, 
    "schema" : "http://schema.org/" 
    }, 
    "@id" : "http://www.example.com", 
    "people" : { 
    "person1" : { 
     "@id" : "people/person1", 
     "name" : "Person 1" 
    }, 
    "person2" : { 
     "@id" : "people/person2", 
     "name" : "Person 2" 
    }, 
    "person3" : { 
     "@id" : "people/person3", 
     "name" : "Person 3" 
    }, 
    "person4" : { 
     "@id" : "people/person4", 
     "name" : "Person 4" 
    } 
    } 
} 

тестирование в формате JSON-LD Playground все выглядит отлично и N-Каре результат показать что-то, как и ожидалось, как это:

<http://www.example.com/data/people/person1> <http://schema.org/name> "Person 1" . 
<http://www.example.com/data/people/person2> <http://schema.org/name> "Person 2" . 
<http://www.example.com/data/people/person3> <http://schema.org/name> "Person 3" . 
<http://www.example.com/data/people/person4> <http://schema.org/name> "Person 4" . 
<http://www.example.com> <http://www.example.com/vocab#people> <http://www.example.com/data/people/person1> . 
<http://www.example.com> <http://www.example.com/vocab#people> <http://www.example.com/data/people/person2> . 
<http://www.example.com> <http://www.example.com/vocab#people> <http://www.example.com/data/people/person3> . 
<http://www.example.com> <http://www.example.com/vocab#people> <http://www.example.com/data/people/person4> . 

Затем я хотел бы добавить схему: знает свойство также держать ключи и не использовать массивы, как это:

{ 
    "@context" : { 
    "@base" : "http://www.example.com/data/", 
    "@vocab" : "http://www.example.com/vocab#", 
    "knows" : { 
     "@container" : "@index", 
     "@id" : "schema:knows", 
     "@type" : "@id" 
    }, 
    "name" : "schema:name", 
    "people" : { 
     "@container" : "@index", 
     "@id" : "people" 
    }, 
    "schema" : "http://schema.org/" 
    }, 
    "@id" : "http://www.example.com", 
    "people" : { 
    "person1" : { 
     "@id" : "people/person1", 
     "knows" : { 
     "person2" : "people/person2", 
     "person3" : "people/person3" 
     }, 
     "name" : "Person 1" 
    }, 
    "person2" : { 
     "@id" : "people/person2", 
     "name" : "Person 2" 
    }, 
    "person3" : { 
     "@id" : "people/person3", 
     "name" : "Person 3" 
    }, 
    "person4" : { 
     "@id" : "people/person4", 
     "name" : "Person 4" 
    } 
    } 
} 

На этот раз, когда я тестировал на детской площадке она возвращает следующую ошибку:

{ "name": "jsonld.SyntaxError", "message": "Invalid JSON-LD syntax; conflicting @index property detected.", "details": { "code": "conflicting indexes", "subject": { "@id": " http://www.example.com/data/people/person2 ", "@index": "person2" } } }

Так что альтернатива, чтобы держать ключи и не использовать массивы или правильный способ использования индексных карт?

С уважением

ответ