- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Sun, 7 Sep 2014 23:25:18 +0200
- To: <public-hydra@w3.org>
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, 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 is prepended. Useful if the > enumerated value is in 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
Received on Sunday, 7 September 2014 21:25:45 UTC