W3C home > Mailing lists > Public > public-hydra@w3.org > January 2015

Re: Enumeration values

From: Dietrich Schulten <ds@escalon.de>
Date: Mon, 05 Jan 2015 10:41:57 +0100
Message-ID: <54AA5C65.90907@escalon.de>
To: public-hydra@w3.org
Hi Kévin,

That is currently not possible, maybe you want to review 
https://github.com/HydraCG/Specifications/issues/82 and see if the 
proposal given there would make sense for you.

The issue of resource descriptions for expected requests has a number of 
competing solutions none of which is a good match for hydra at this time 
(IMO).
- The Resource Shapes WG W3 submission [1] shows how to describe shapes 
using a polished version of oslc, but that is just one possible example 
how a future resource shape could look like - others are ShExC, SPIN, 
etc., and the WG has not arrived at anything of practical relevance yet.
- schema.org actions [2] require you to PUT/POST/PATCH an Action class 
instead of the actual object you want to edit on the server. 
Unfortunately that is not a good match for most existing APIs where you 
simply send an item which should be added, replaced or updated - this 
makes it difficult to implement an API and render its responses 
interchangeably as Hal, json-ld or whatever, because the concept of 
requesting an Action does not exist in other media types. OTOH if you 
use schema:potentialAction, you have a quite powerful request 
description tool, but it is really a parallel world to hydra:operation 
(in spite of existing attempts to unify both). On the other hand, 
schema:potentialAction is well established in the wild, Gmail uses it 
already. Please let me know if the latter route is an option for you, I 
am interested if there is an audience for the parallel world in 
hydra-java [3].

[1] http://www.w3.org/Submission/shapes/
[2] http://schema.org/docs/actions.html
[3] https://github.com/dschulten/hydra-java/

Best regards,
Dietrich

Am 05.01.2015 um 09:08 schrieb Kévin Dunglas:
> Hello,
>
> Is there a way to describe allowed values with Hydra?
>
> For instance if I my API supports:
>
>   * gr:ConstructionInstallation
>   * gr:Dispose
>
>
> But not:
>
>   * gr:Sell
>
>
> 2014-09-07 23:25 GMT+02:00 Markus Lanthaler <markus.lanthaler@gmx.net 
> <mailto:markus.lanthaler@gmx.net>>:
>
>     On 7 Sep 2014 at 13:50, Dietrich Schulten wrote:
>     > Am 06.09.2014 15:21, schrieb Gregg Kellogg:
>     >> On Sep 6, 2014, at 12:04 PM, Dietrich Schulten wrote:
>     >>> { name: "Pirates of the Caribbean", acquire: "RENT", delivery:
>     >>> "IN_SHOP" }
>     >>>
>     >>> Can I write a context which says that "RENT" means
>     >>> http://purl.org/goodrelations/v1#LeaseOut and "IN_SHOP" means
>     >>> "http://schema.org/OnSitePickup"? The json-ld spec seems not to
>     >>> mention such a usage.
>     >>>
>     >>> It seems that terms cannot appear as attribute values unless the
>     >>> attribute is @type. Also, jsonld-java doesn't understand what I
>     >>> might mean by:
>     >>
>     >> Actually, you want @type: @vocab, which will allow term values
>     >> without needing a compact URI form.
>     >
>     > After some discussion with Gregg who pointed me to
>     > http://www.w3.org/TR/json-ld-api/#value-expansion, this is the
>     outcome.
>     >
>     > The @vocab keyword has a second meaning which is not mentioned
>     in the
>     > json-ld spec, only in the api. If used as a value of @type in the
>     > context, it says that the corresponding attribute value must be
>     > expanded to an IRI.
>
>     Actually, it's also described in the syntax spec (but there's no
>     example):
>
>     http://www.w3.org/TR/json-ld/#type-coercion
>
>
>
>     > Example:
>     > Define @vocab to be schema.org <http://schema.org>, let "gr" be
>     goodrelations, let
>     > "delivery" be @type:@vocab, then the value of the "delivery"
>     attribute
>     > in the JSON will be expanded as an IRI.
>     >
>     > The effect on the value of "delivery" is this: - A compact IRI
>     > gr:LeaseOut expands to http://purl.org/goodrelations/v1#LeaseOut. -
>     > Without gr: the @vocab value of schema.org <http://schema.org>
>     is prepended. Useful if the
>     > enumerated value is in schema.org <http://schema.org> - And now
>     the surprise: If I
>     > additionally define RENT to be gr:LeaseOut, that will be
>     resolved, too:
>     >
>     > {
>     >  "@context": {
>     >    "@vocab" : "http://schema.org/",
>     >    "gr": "http://purl.org/goodrelations/v1#",
>     >    "delivery" : {
>     >      "@id" : "availableDeliveryMethod",
>     >      "@type" : "@vocab"
>     >    },
>     >    "RENT": "gr:LeaseOut"
>     >   },
>     >   "@type": "Movie",
>     >   "name": "Pirates of the Carribean",
>     >   "offer": {
>     >     "delivery": "RENT"
>     >    }
>     > }
>     >
>     > expands to the following in the http://json-ld.org/playground/
>     >
>     > {
>     >   "@type": "http://schema.org/Movie",
>     >   "http://schema.org/name": "Pirates of the Carribean",
>     >   "http://schema.org/offer": {
>     >     "http://schema.org/availableDeliveryMethod": {
>     >       "@id": "http://purl.org/goodrelations/v1#LeaseOut"
>     >     }
>     >   }
>     > }
>     >
>     > Thanks a lot!
>
>     Yep, this is a very powerful feature.
>
>
>     --
>     Markus Lanthaler
>     @markuslanthaler
>
>
>
>
>
> -- 
> Kévin Dunglas
> Consultant et développeur freelance
>
> http://dunglas.fr
> Tél. : 06 60 91 20 20
Received on Monday, 5 January 2015 09:42:35 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:29:44 UTC