JSON-LD nedir ve bir pod onu gerçekte nerede kullanır?
JSON-LD, aynı zamanda RDF olan JSON'dır. Biz tam olarak bir tane böyle belge üretiyoruz ve hiçbirini işlemiyoruz. Onu W3C şartnameye bağladı, Solid topluluğunun sunucusu işliyor ve bizim kendi durumumuz şartnamede var, uygulanmış değil.
Fikir
Sıradan JSON'ı alın, anahtarlarını evrensel olarak benzersiz URL'lere eşleyen bir @context ekleyin
ve aynı belge artık bir RDF üçlüleri kümesidir, model burada.
{
"@context": "https://schema.org/",
"name": "Ada",
"knows": { "name": "Bob" }
}
JSON'a dair hiçbir şey değişmedi. Bağlı veriyi umursamayan bir tüketici onu JSON olarak okur ve bağlamı yok sayar. Umursayan bir tüketici onu üçlülere açar ve başka bir yerden gelen veriyle birleştirir.
O geriye dönük uyumluluk tasarımın tamamıdır ve JSON-LD'nin, Turtle yerine, çoğu insanın ilk karşılaştığı biçim olmasının sebebi budur.
Kurduğu tuzak
Bir belge sıradan JSON gibi görünüp RDF gibi davranabilir ve fark yalnızca biri onu işlediğinde ortaya çıkar.
- Birbirinin aynısı görünen iki anahtar farklı şeyler ifade edebilir, bağlamlar farklıysa.
- Bir bağlam bir URL'dir ve bir URL taşınabilir, değişebilir ya da kaybolabilir. Anlamı uzak bir bağlamı çekmeye bağlı olan bir belgenin, okurların çoğunun fark etmediği bir bağımlılığı vardır.
- "JSON-LD'yi destekliyoruz" muğlaktır. Bu, içinde bir
@contextolan bir dosya sunabiliyoruz anlamına da gelebilir, açıyor, sıkıştırıyor ve kanonikleştiriyoruz anlamına da. Bunlar çılgınca farklı miktarda mühendisliktir ve o ifade ikisini birbirinden ayırmaz.
Bu sayfanın var olma sebebi sonuncusudur, çünkü bize uygulanıyor.
Gerçekte ne yaptığımız, iki yönde de ölçülmüş
Kodumuzda JSON-LD araması 21 dosyayla eşleşiyor. Bu bir uygulama gibi görünüyor. Değil.
Onları okumak @context URL dizgileri, .jsonld dosya uzantısı yönlendirmesi, sunulan bir
belge ve yorumlar gösteriyor. JSON-LD kitaplığı içe aktarması: sıfır. Bir açma, sıkıştırma ya da
kanonikleştirme çağrısı: sıfır; arama biçiminin başka yerlerde gerçek uygulamaları bulduğunu
doğrulayan bir kontrolle birlikte.
Yani: kodumuzda hiçbir JSON-LD işleme yok. Lexicon'ın durumu, şartnamede var, uygulanmış değil, doğrudur ve ona güvenmek yerine kontrol ettik.
Ve aynı ölçüde doğru olan diğer yarısı: gerçek bir JSON-LD belgesi sunuyoruz.
$ curl -s https://pod.solidus.network/clientid.jsonld
200 application/ld+json
{"@context":["https://www.w3.org/ns/solid/oidc-context.jsonld"],
"client_id":"https://pod.solidus.network/clientid.jsonld", ...}
Bu bir Solid İstemci Kimliği belgesidir, yani bir uygulamanın Solid oturum açma akışında kendisini nasıl tanıttığı (akış burada). Ürettiğimiz sabit bir biçimdir, ayrıştırdığımız bir belge değil.
Uydurma bir .jsonld yolu 200 yerine 401 döndürüyor, dolayısıyla yukarıdaki belge
gerçekten sunuluyor; .jsonld ile biten her şeye yanıt veriliyor değil.
Bir pod'un pratikte JSON-LD ile karşılaştığı yerler
- Yukarıdaki istemci kimliği belgesi. Bizim ürettiğimiz, bir kimlik sağlayıcının tükettiği.
- Bir pod'da saklanan kimlik bilgileri. JSON-LD biçimindeki bir W3C doğrulanabilir kimlik bilgisi, kuruluşu gereği bağlı veridir; dolayısıyla bir pod'a opak bir yığın olarak değil, bir RDF kaynağı olarak iner.
- İçerik müzakeresi. Dağıtılmış sunucu, isterseniz size
application/ld+jsonverir ve saçma bir tür içintext/plaindöndürür; müzakerenin gerçek olduğunu gösteren kontrol budur.
Üçü de Solid sunucusunun davranışı ya da statik bir belgedir. Hiçbiri bir JSON-LD işleyicisi değildir ve "destekliyor" sözcüğünün bunu bulanıklaştırmasına izin vermeyeceğiz.
"Platform JSON-LD'yi destekliyor"un dürüst sürümü
Kendi iç tarifimiz, platformun JSON-LD dahil RDF'i desteklediğini söylüyor. Bu, çalıştırdığımız Community Solid Server için doğrudur: Solid topluluğunun referans uygulaması, ki onu biz yazmadık. Önce bunu söylemek doğru atıftır ve /rdf ile /turtle sayfalarındakiyle aynı ayrımdır.
JSON-LD açma ya da kanonikleştirmeye ihtiyacınız varsa, bunun için bize bel bağlamayın. Bir kitaplık kullanın. Ekosistemin kitaplıkları olgun, bizimki mevcut değil.
Bunun çözmediği şey
Bir @context bir belgeyi yorumlanabilir kılar. Onu doğru kılmaz ve kimin okuyabileceğini
söylemez. Bunlar sırasıyla kimlik bilgileri ve
erişim denetimidir ve ikisinin de kendi dürüst durumu vardır.