- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Thu, 6 Apr 2017 08:21:27 +0200
- To: <public-hydra@w3.org>
- Cc: "'Martin Bayly'" <martin@parkbayly.net>
Hi Martin, On Wednesday, April 5, 2017 1:00 AM, Martin Bayly wrote: > Does anyone know of any examples of Template Links as described in the > vocabulary and what is the relationship between a TemplateLink and an > IRITemplate. > > https://www.hydra-cg.com/spec/latest/core/#templated-links > > I'm most likely exposing my lack of knowledge about how RDF works > here. I see that the range of a TemplatedLink is an IRITemplate. Right. In RDF properties have types too. In the section you referenced, a property "hydra:search" is defined and it is declared to be of type TemplatedLink. That tells a client that it can expect that the value of such a property is a IriTemplate. You'd use TemplatedLink when you define your vocabulary or create the ApiDocumentation. > But I'm trying to understand how I would represent this in an API > response. > > e.g. take the example of the entrypoint for the event-api demo. > > Let's say that the "events" URL actually needed to be a template with > a query parameter filtering how many events are returned. > > How would you represent that? > > This is the original API response: > { > "@context": "/hydra/event-api/contexts/EntryPoint.jsonld", > "@id": "/hydra/event-api/", > "@type": "EntryPoint", > "events": "/hydra/event-api/events/" > } > > How would you represent it as a TemplatedLink? Like this? > { > "@context": "/hydra/event-api/contexts/EntryPoint.jsonld", > "@id": "/hydra/event-api/", > "@type": "EntryPoint", > "events": { > "@type": "IriTemplate", > "template": "/hydra/event-api/events{?pageSize}" > "mapping": ... > } > } > > Or something completely different? No, exactly like that. Additionally the vocabulary [1] would be updated to describe that. Currently it defines that property as { "@id": "vocab:EntryPoint/events", "@type": "hydra:Link", "label": "events", "description": "The events collection", ... } You would change it to { "@id": "vocab:EntryPoint/events", "@type": "hydra:TemplatedLink", "label": "events", "description": "The events collection", ... } To tell the client to expect a template instead of a direct link > How would something like this be integrated with the concept of > supported operations/operations? Nothing changes in that regard. Operations would apply to the resources that you get after expanding the IRI template instead of the resources you would directly point to. Cheers, Markus [1] http://www.markus-lanthaler.com/hydra/event-api/vocab -- Markus Lanthaler @markuslanthaler
Received on Thursday, 6 April 2017 06:21:52 UTC