- From: Martin Hepp <martin.hepp@ebusiness-unibw.org>
- Date: Fri, 4 Nov 2011 09:15:00 +0100
- To: goodrelations-list <goodrelations@ebusiness-unibw.org>
- Cc: "public-vocabs@w3.org Vocabularies" <public-vocabs@w3.org>
Dear all:
I was recently asked on how to model quantities of goods in GoodRelations, e.g. "10 g of salt" or "1 liter of Bordeaux red wine".
There are two different ways of modeling this, and both are supported by GoodRelations:
1. You can say that you offer exactly 10g of salt or 1 l of red wine, but maybe accept this offer multiple times.
2. You can say that you offer salt or red wine and that the price is USD 1 / 10 g or 1 l.
In case 1, you model the quantity *to which the offer refers* using TypeAndQuantityNode in combination with gr:SomeItems
In case 2, you model it using gr:hasUnitOfMeasurement on the gr:UnitPriceSpecification.
Approach 2 does work only if the price is related to a standard unit (C62, INH, LTR, GRM, ...). So you can say that the price is 1 USD / liter (unit code: LTR), but this way, you cannot say that it is 1 USD / 10 gram.
If you want to say something like USD1 / 10 g, you must
- create a gr:SomeItems node representing some salt (or any other type of good),
- add this to a gr:Offering with gr:includesObject and a gr:TypeAndQuantityNode with 10 g as the quantity
- set the price to 1 USD per 1 C62 of this offer (because one piece of this gr:SomeItems instance means 10 g).
Examples in Turtle syntax:
# 1 l of Bordeaux red wine for 1 USD/liter
foo:offer a gr:Offering;
gr:hasBusinessFunction gr:Sell;
gr:includesObject [ a gr:TypeAndQuantityNode;
gr:amountOfThisGood "1"^^xsd:float;
gr:hasUnitOfMeasurement "C62"^^xsd:string;
gr:typeOfGood foo:redwine ];
gr:hasPriceSpecification [
a gr:UnitPriceSpecification;
gr:hasCurrency "USD"^^xsd:string;
gr:hasCurrencyValue "1.00"^^xsd:float;
gr:validThrough "2012-12-31T23:59:59Z"^^xsd:dateTime;
gr:hasUnitOfMeasurement "LTR"^^xsd:string ].
# This represents an arbitrary amount of red wine:
foo:redwine a gr:SomeItems, <http://www.productontology.org/id/Bordeaux_wine>;
gr:name "ACME Bordeaux Red Wine - dry and tasty"@en.
# Table salt for 1 USD / 10 g
foo:offer a gr:Offering;
gr:hasBusinessFunction gr:Sell;
gr:includesObject [ a gr:TypeAndQuantityNode;
gr:amountOfThisGood "10"^^xsd:float;
gr:hasUnitOfMeasurement "GRM"^^xsd:string;
gr:typeOfGood foo:salt ];
gr:hasPriceSpecification [
a gr:UnitPriceSpecification;
gr:hasCurrency "USD"^^xsd:string;
gr:hasCurrencyValue "1.00"^^xsd:float;
gr:validThrough "2012-12-31T23:59:59Z"^^xsd:dateTime;
gr:hasUnitOfMeasurement "C62"^^xsd:string ].
# This represents an arbitrary amount of table salt:
foo:redwine a gr:SomeItems, <http://www.productontology.org/id/Salt>;
gr:name "ACME Table Salt - clear and salty"@en.
Note: You can convert those to others syntaxes with
- http://rdf-translator.appspot.com/
- http://www.ebusiness-unibw.org/tools/rdf2rdfa/
- http://www.ebusiness-unibw.org/tools/rdf2microdata/ (experimental)
Best wishes
Martin Hepp
Received on Friday, 4 November 2011 08:15:34 UTC