可验证凭证学习总结
1.什么是json-ld?
json-ld翻譯過來就是鏈接數據,那么如何做到數據的鏈接呢?其實原理很簡單,給不同的對象賦予不同的名字就可以了。
假設世界上有500個叫小明的人,有一天有一個小明見義勇為。許多人都想寫關于那個小明的事跡。1000年后,未來人想知道當年小明到底做了什么事情,于是從網上查找小明的資料。那么1000年前叫小明的有500人,每個人都在網上有記錄。如何搜出他們要找的那個小明呢?
前面說到了給不同的對象賦予不同的名字,如何做到呢?也很簡單,就是加一個URI。比如上面那個小明,其實他在網上的名字為:uri:“小明”。比如"http://schema.org/name": “小明”。
那么,如果要寫小明的英勇事跡,所有人就得把小明的名字替換成"http://schema.org/name": “小明”。那么你在網上搜小明的時候,只要明確了是這個"http://schema.org/name": “小明”,那么這個小明的所有資料就可以被瀏覽器給統一搜出來了。也就是說,如果A寫的小明跟B寫的小明跟C寫的小明跟其他人寫的小明,只要網上出現了"http://schema.org/name": “小明”,這些相關都可以被鏈接起來。這就是鏈接數據的道理。
詳細用法參見:JSON-LD簡介(轉)
關于以上鏈接博客的相關信息說明:
context是什么東西?如何引用?如何創建?
也就是說有一個叫做http://json-ld.org/contexts/person.jsonld的context文檔。它的內容是:
{
“@context”:
{
"name": "http://schema.org/name","image": {"@id": "http://schema.org/image""@type": "@id"},"homepage": {"@id": "http://schema.org/url","@type": "@id"}}
}
可驗證憑證官網中5.3 EXAMOPLE16和EXAMOPLE17也用到了。
為什么url和image屬性是個對象,里邊還有一個@id屬性?
答:The ‘@id’ keyword means ‘This value is an identifier that is an IRI’。也就是是,是一個IRI的話,就得加個@id屬性說明一下。
所以想要寫小明的英勇故事,只需要在你的文檔里加上小明的context就行了,就不必要每次都寫"http://schema.org/name": “小明”,之間寫小明,只要文檔里有了這個context,機器就知道你所指的小明就是"http://schema.org/name": "小明"了,因為contex中包含了http://schema.org/name這個部分。
2.為什么可驗證憑證里會有多個context?那不就亂了嗎?如果context沖突了怎么辦?
答:官網上第四章4.1NOTE中支持必須保證context的順序,我猜想,如果第一個context跟第二個context中有相同的屬性的話,那么默認按照context順序來給于解釋。
例子:
“@context”: [
“https://www.w3.org/2018/credentials/v1”,
“https://www.w3.org/2018/credentials/examples/v1”
]
假設第一個context文檔中有issuer這個屬性:
”issuer“: “https://www.w3.org/2018/credentials/v1/issuer”
第二個context文檔中也有issuer這個屬性:
”issuer“: “https://www.w3.org/2018/credentials/examples/v1/issuer”
如果可驗證憑證出現了issuer這個數據。應該優先被解釋為: “https://www.w3.org/2018/credentials/v1/issuer”。
如果想要表達成第二個issuer,那么必須得寫出issuer全名。
3.可驗證憑證官網上B部分Base Context給出的"https://www.w3.org/2018/credentials/v1"文檔?
怎么各種套娃啊,看不懂了都!
總結
- 上一篇: 学英语遇到的问题1
- 下一篇: xml签名和普通数字签名