Views of non-collection
I think that views don't only apply to filtering collection members. An example is serving resources translated into various languages. As a business case let's have a collaborative translation application
I'm assuming "@container":"@language" where obvious.
GET /document
Let's assume that English is default and we are served that (possibly including a Content-Location header?)
{
"@id": "/document",
"title": { "en": "My resource" },
"description": { "en": "My resource description" },
"viewTemplate": {
"@type": [ "ViewTemplate", "SelectView" ],
"template": "/document?expand={prop}",
"mapping": [
{ "variable": "property", "property": "rdf:Property" }
]
}
}
GET /document?lang=pl
When the client constructs the "TranslatedView", all textual content is served in the desired language instead
{
"@id": "/document",
"title": { "pl": "Mój zasób" },
"description": { "pl": "Opis mojego zasobu" },
"view": {
"@id": "/document?lang=pl",
},
"viewTemplate": {
"@type": "ViewTemplate",
"template": "/document?lang={lang}",
"mapping": [
{ "variable": "lang", "property": "lexvo:language" }
]
}
}
Another example would touch a matter of the resource's triples received by the client. It could be possible to provide a view that would allow a client to specify which properties it is interested in, i.e.:
GET /document?expand=foaf:primaryTopic
{
"@id": "/document",
"title": { "en": "My resource" },
"primaryTopic": {
"@id": "/subject",
"description:": "Event deepr resource's description"
},
"description": { "en": "My resource description" },
"viewTemplate": {
"@type": [ "ViewTemplate", "TranslatedView" ],
"template": "/document?lang={lang}",
"mapping": [
{ "variable": "lang", "property": "lexvo:language" }
]
}
}
It would also allow to trim the _default_ response from unwanted relations. This doesn't imply on how the client would be informed on the underlying data model it could query.