- From: Jindřich Mynarz <mynarzjindrich@gmail.com>
- Date: Sun, 15 Jun 2014 18:51:19 +0200
- To: public-hydra@w3.org
- Message-ID: <CAE=8Bu9gxhJx53icTkoaxMTHrVNYPvG7jiyaxhQvmjYfWD59ig@mail.gmail.com>
Hi, in the interest of keeping distinct topics in separate threads, I'll continue with my questions about Hydra in another email. Overall, I struggle to understand the connections between several parts of the Hydra Core Vocabulary. The "main" part of the vocabulary, including hydra:Class, hydra:SupportedProperty and hydra:Operation, is well-described and fits nicely most CRUD scenarios. However, I find it difficult to grasp how it's related with the part including hydra:TemplatedLink or hydra:IriTemplate, which seem to match more search-oriented scenarios. I was thinking about describing a simple search API in Hydra. I started with a description of an API that allows to search for resources regardless of their type via free-text queries. I found out that Hydra allows to link to hydra:IriTemplate from hydra:ApiDocumentation via hydra:entrypoint: :simple-search-api a hydra:ApiDocumentation ; hydra:entrypoint :simple-search . :simple-search a hydra:IriTemplate ; hydra:template "/search{?q}" ; hydra:mapping [ a hydra:IriTemplateMapping ; hydra:variable "q" ; hydra:property hydra:freetextQuery ; hydra:required true ] . Is this description in line with how Hydra is intended to be used? Or is it a wrong interpretation of Hydra's spec? Then I thought how to describe a similar simple search but restricted to instances of a specified class. I assume this can be done via hydra:supportedClass. For example, if an API offers a search for instances schema:Person, then I presume schema:Person can be described as hydra:supportedClass: :simple-search-api a hydra:ApiDocumentation ; hydra:supportedClass schema:Person . However, then I wondered if it's correct to reuse schema:Person directly and attach to it API-specific hydra:Operations. Is it better to define an API-specific subclass of the extended class, to which operations are attached? This seems to be a better approach, since the API likely doesn't support all instances of schema:Person, but only an API-specific subset of schema:Persons. :simple-search-api a hydra:ApiDocumentation ; hydra:supportedClass :SimpleSearchPerson . :SimpleSearchPerson a hydra:Class ; rdfs:subClassOf schema:Person . Is this a recommended approach in Hydra how to reuse third-party vocabularies and extend them with local assertions? Now, what I don't understand is the preferred way of connecting hydra:search (or any hydra:TemplatedLink) to the supported Person class (or any hydra:Class). Can I use hydra:search directly with supported classes of the API, such as in the following example? :SimpleSearchPerson hydra:search :simple-search-person-template . :simple-search-person-template a hydra:IriTemplate ; hydra:template "/person{?name}" ; hydra:mapping [ a hydra:IriTemplateMapping ; hydra:variable "name" ; hydra:property schema:name ; hydra:required true ] . Or instead, is it necessary to attach :simple-search-person-template to :SimpleSearchPerson through hydra:supportedOperation? Relating hydra:Classes to hydra:IriTemplates is probably the part which is the most unclear to me. Best, Jindřich -- Jindřich Mynarz http://mynarz.net/#jindrich
Received on Sunday, 15 June 2014 16:52:10 UTC