可验证凭证学习总结
作者:互联网
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"文档?
怎么各种套娃啊,看不懂了都!
标签:总结,可验证,凭证,小明,http,context,org,schema,issuer 来源: https://blog.csdn.net/qq_39286701/article/details/116894231