Disambiguasi properti operasi kompak JSON-LD

Mari pertimbangkan dokumen JSON-LD sederhana tanpa konteks:

[
   {
      "@id": "http://stackoverflow.com/#users",
      "http://rdfs.org/sioc/ns#name": "SO Users",
      "http://xmlns.com/foaf/0.1/member":
      {
         "@id": "http://example.com/me#me"
      }
   },
   {
      "@id": "http://example.com/me#me",
      "http://xmlns.com/foaf/0.1/givenName": "Tomasz"
   }
]

Saya ingin menambahkan satu @context ke dokumen ini untuk mendapatkan sesuatu seperti di bawah ini:

{
   "@context": { /* what here? */ },
   "@graph": [
   {
      "@id": "http://stackoverflow.com/#users",
      "Name": "SO Users",
      "Members": [ "http://example.com/me#me" ]
   },
   {
      "@id": "http://example.com/me#me",
      "Name": "Tomasz"
   }]
}

Masalahnya di sini adalah properti foaf:givenName dan sioc:name keduanya dipetakan ke kunci Nama di json. Tidak akan menjadi masalah ketika menulis dokumen ini secara manual, karena @context yang disarangkan dapat digunakan untuk mengganti properti.

Namun apakah mungkin dengan operasi Compact seperti yang ditentukan oleh spesifikasi JSON-LD? Atau merupakan satu-satunya pilihan untuk memetakan setiap predikat ke properti yang tidak ambigu (dalam hal ini dapat berupa Nama dan Nama yang Diberikan)


person Tomasz Pluskiewicz    schedule 05.02.2014    source sumber


Jawaban (1)


Agar Name dapat memetakan ke IRI yang berbeda dalam setiap objek, Anda harus memiliki konteks terpisah di setiap objek, atau konteks utama dan konteks yang menggantikan tempat yang Anda inginkan agar memiliki arti yang berbeda. Namun, algoritme pemadatan menggunakan satu konteks untuk keseluruhan dokumen, jadi saya khawatir Anda tidak dapat melakukannya dengan algoritme standar.

Contoh dari apa yang Anda inginkan menggunakan konteks terpisah adalah sebagai berikut:

{
   "@context": {
      "Name": "http://rdfs.org/sioc/ns#name",
      "Members": "http://xmlns.com/foaf/0.1/member" },
   "@graph": [
   {
      "@id": "http://stackoverflow.com/#users",
      "Name": "SO Users",
      "Members": [ "http://example.com/me#me" ]
   },
   {
      "@context": {"Name": "http://xmlns.com/foaf/0.1/givenName"},
      "@id": "http://example.com/me#me",
      "Name": "Tomasz"
   }]
}

Kami sedang mempertimbangkan fitur pembingkaian yang memungkinkan konteks didefinisikan dan digunakan dalam bingkai berbeda pada dokumen yang menggunakan penyematan objek, namun ini hanyalah proposal untuk saat ini.

Cara yang bagus untuk menguji efek berbagai algoritme seperti di http://json-ld.org/playground.

person Gregg Kellogg    schedule 05.02.2014
comment
Itulah yang saya pikir. Namun ada baiknya mengetahui Anda mempertimbangkan fungsi tersebut. - person Tomasz Pluskiewicz; 06.02.2014