- From: Dietrich Schulten <ds@escalon.de>
- Date: Thu, 02 Oct 2014 01:18:51 +0200
- To: Markus Lanthaler <markus.lanthaler@gmx.net>, <public-hydra@w3.org>
Am 1. Oktober 2014 17:48:30 schrieb "Markus Lanthaler" <markus.lanthaler@gmx.net>: > At the moment I guess I have just two questions: > > 1) What was the reasoning to make schema.org the default vocabulary? Do you > think most people will just use that or do you think it would be too much to > require developers to specify that explicitly for each package/class? Convention over configuration. Even if I do not annotate my classes at all, I wanted at least some potentially meaningful output. Schema.org is also used by the json-ld spec and it seems a quite suitable starting point for many rest apis, with its focus on things of interest for search engines and its extension points for external vocabs. If it's interesting for Google, Bing, Yahoo and Yandex, chances are that there are also rest apis for it :) The drawback: if you do not use attribute names from schema.org, they are meaningless for LD in spite of the @context. Ideally, the tooling should tell me if I have attributes that are not defined by any given vocabulary, and I should not need IDE plugins for that. I have some ideas there, but that is still "Zukunftsmusik". > > 2) The README contains the following example: > > enum BusinessFunction { > @Expose("gr:LeaseOut") > RENT, > @Expose("gr:Sell") > FOR_SALE, > @Expose("gr:Buy") > BUY > } > > @Term(define = "gr", as = "http://purl.org/goodrelations/v1#") > class Offer { > public BusinessFunction businessFunction; > ... > } > > This makes me wonder what the scope of term definitions is and how you > handle possible "conflicts". I would assume that in this example the term > "gr" is scoped to the Offer class and not available (yet) within the > BusinessFunction enum... but apparently that's not the case. Could you > please elaborate a bit on that? Right now, nested objects will have no @context of their own unless (1) they define a different @vocab than the surrounding object or (2) they expose terms of their own. That allows to have terms within a nested context which redefine terms of the outer context. I do not collect exposed terms of nested objects into the top level context yet because I saw potential for conflicts. That could certainly be improved, e.g. by collecting terms into the root if no conflicts are detected and by pushing conflicting terms into sub-contexts. Otoh that seemed a mere optimization right now. > > > > Operations are next on the roadmap. > > Cool! It seems, schema.org is a bit ahead at the moment. I find PropertyValueSpecification very expressive, it tells the client exactly what it should send, in place, very much like an HTML form, see [1]. No sense in duplicating all that in Hydra. I'm still sorting out the overlap, trying to find a way to generate state-changing affordances from Java resource handler methods, with a minimum of special annotations in Java. There is one thing schema.org doesn't solve, I'll bring it up in [2], as soon as I have a discussion-worthy proposal ready :) > Do you also plan to implement a very simple API to illustrate how this > all works in practice? Perhaps a port of the simple Event API [1] I > implemented a while ago would be interesting as we could compare our > approaches directly. yes, and I want to put it in the cloud, too. Actually, the tests already contain a sample EventController which could be part of a war file. Best regards, Dietrich > > [1] http://schema.org/docs/actions.html [2] https://github.com/HydraCG/Specifications/issues/70
Received on Wednesday, 1 October 2014 23:19:20 UTC