[英]JSON-LD compact operation property disambiguation
讓我們考慮一個沒有上下文的簡單JSON-LD文檔:
[
{
"@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"
}
]
我想在此文檔中添加一個@context以獲得如下內容:
{
"@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"
}]
}
這里的問題是foaf:givenName和sioc:name屬性都映射到json中的Name鍵。 手動創作此文檔不會有問題,因為可以使用嵌套的@context覆蓋屬性。
但是,使用JSON-LD規范定義的Compact操作是否可能? 還是將每個謂詞映射到明確屬性的唯一選項(在這種情況下,可以是Name和GivenName)
要使Name
映射到每個對象中的不同IRI,將需要您在每個對象中有一個單獨的上下文,或一個主上下文,並覆蓋您希望它表示不同含義的位置。 但是,壓縮算法對整個文檔使用單個上下文,因此恐怕您無法使用標准算法來做到這一點。
您想要使用單獨的上下文的示例如下:
{
"@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"
}]
}
我們正在考慮一種框架功能,該功能允許在使用對象嵌入的文檔的不同框架中定義和使用上下文,但這只是目前的建議。
可以很好地測試不同算法的效果,如http://json-ld.org/playground所示 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.