[英]What is the use of @vocab in JSON-LD and what is the difference to @context?
JSON-LD中的@vocab
屬性是什么? 正如我所看到的,你可以“導入”一個遠程詞匯表,但這與@context
可以做的不一樣嗎? 如果我沒錯,那么你也可以“導入” @context
的遠程源代碼。 那么@vocab
和@context
之間的區別在@vocab
?
額外的問題:我可以擁有一個以上的@vocab
嗎? 例如,第一個引用到schema.org,另一個引用到rdfs?
@vocab
專門用於聲明所有術語派生的默認詞匯表,而不必為每個術語聲明特定的映射(正如您通常在@context
所做的那樣)。
例如,請參閱此代碼段(取自JSON-LD 1.0規范 ):
{
"@context": {
"@vocab": "http://schema.org/"
}
"@id": "http://example.org/places#BrewEats",
"@type": "Restaurant",
"name": "Brew Eats"
...
}
在這個片段中, @vocab
用於定義在此上下文中,所有術語都來自schema.org詞匯表。 因此,在以下片段中, Restaurant
映射到http://schema.org/Restaurant
,並將地圖name
為http://schema.org/name
。 您當然也可以在@context
使用顯式映射完成此操作:
{
"@context": {
"Restaurant": "http://schema.org/Restaurant",
"name" : "http://schema.org/name"
}
"@id": "http://example.org/places#BrewEats",
"@type": "Restaurant",
"name": "Brew Eats"
...
}
但是當你開始使用來自相同詞匯表的越來越多的術語時,這很快變得乏味。 @vocab
只是一個有用的簡短方法:“如果我沒有明確的術語映射,這就是它映射到的”。
至於你是否可以使用多個@vocab
:你可以在JSON-LD文檔中擁有多個@vocab
(就像你可以擁有多個@context
),但你不能同時擁有多個@vocab
@context
。 我相信它定義默認值的解釋也清楚地表明為什么你不能在同一個上下文中有兩個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.