- From: Gregg Kellogg <gregg@greggkellogg.net>
- Date: Sat, 6 Sep 2014 14:21:19 +0100
- To: Dietrich Schulten <ds@escalon.de>
- Cc: "public-hydra@w3.org" <public-hydra@w3.org>
On Sep 6, 2014, at 12:04 PM, Dietrich Schulten <ds@escalon.de> wrote:
>
> Hi,
>
> while experimenting with Java annotations for Hydra enabled classes, I
> ran into the problem of enumerated values: schema.org uses
> http://schema.org/Enumeration with many subtypes such as
> http://schema.org/OnSitePickup and it has a general practice to allow
> enumeration values from other vocabs as attribute values, notably
> goodrelations, as in the businessFunction attribute below:
>
> {
> "@context": {
> "@vocab" : "http://schema.org/"
> },
> "@type": "Movie",
> "name": "Pirates of the Carribean"
> "offer": {
> "businessFunction": "http://purl.org/goodrelations/v1#LeaseOut"
> }
> }
>
> An enumeration value is a URL. In the json-ld spec, it is not
> mentioned that I can use a term to define the semantics of an
> attribute *value*.
>
> When applying enumeration values to a plain json file, the problem
> arises that some mapping might be necessary. Assuming this json:
>
> {
> 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.
Gregg
> "@context":
> {
> "schema" : "http://schema.org/",
> "gr" : "http://purl.org/goodrelations/v1#",
>
> "RENT" : "gr:LeaseOut",
> "IN_SHOP": "schema:OnSitePickup"
> },
> "schema:name" : "Pirates of the Caribbean",
> "acquire" : "RENT",
> "delivery" : "IN_SHOP"
> }
>
> That leads me to believe that it cannot be done, is that correct?
>
> The solution for my Java Hydra set of annotations is to allow
> something like this:
>
> @Expose("BusinessFunction")
> @Term(define = "gr", as = "http://purl.org/goodrelations/v1#")
> enum Acquire {
> @Expose("gr:LeaseOut")
> RENT
> }
>
> If the client accepts json-ld, it will get the full url value, for
> other json varieties it will render "RENT". But hey, what a noise,
> even if I make the @Term a package annotation.
>
> Best regards,
> Dietrich
>
> --
> Dietrich Schulten
> Escalon System-Entwicklung
> Bubenhalde 10
> 74199 Untergruppenbach
> +49 172 7369456
>
Received on Saturday, 6 September 2014 13:21:49 UTC