GoodRelationsService
From Wiki of the E-Business and Web Science Research Group
Contents |
Overview
On this page, we explain how you can use GoodRelations to add rich meta-data about coomodity services (e.g. haircutting) to your Web pages so that state-of-the art search engines, matchmaking services, and recommender systems will find your company.
GoodRelations is a standardized vocabulary for product, price, and company data that can (1) be embedded into existing static and dynamic Web pages and that (2) can be processed by other computers. This increases the visibility of your products and services in the latest generation of search engines, recommender systems, and other novel applications.
If you are looking for recipes for tangible products or other types of businesses, please check the GoodRelations Cookbook.
Resources:
- Project Main Page: http://purl.org/goodrelations/
- Vocabulary: http://purl.org/goodrelations/v1
- Documentation: http://purl.org/goodrelations/v1.html
- Developer's Wiki: http://www.ebusiness-unibw.org/wiki/GoodRelations
Target Audience of this Recipe
This recipe is intended for a Web developer maintaining the Web page for a store providing commodity services.
Scenario Description
For our example, we take the Web page http://plushbeautybar.com/services.html.
On that page, various individual services are being offered, including price information, e.g.
- Pedicure - $30
- Mani/Pedi - $50
- Gel - $55
- Kiddie Mani - $10
- Manicure (shiny buff or polish) - $25
The basic company information for that business, including store locations and opening hours is already included in their main page http://plushbeautybar.com/, so we do not repeat that in here.
Let's assume we want to encode these individual services specification into that Web page.
Further Information
This recipe refines and complements the following generic GoodRelations recipes:
- Recipe 1: GoodRelations and Yahoo SearchMonkey: How site owners can use GoodRelations for Yahoo! SearchMonkey (status: mature)
- Recipe 2: GoodRelations and Google: Proposed patterns, currently under review for compliance by Google (status: mature)
- Recipe 3: Minimal Example: Describing your business, stores, and opening hours (status: mature)
- Recipe 4: Simple Example: Minimal example plus a broad description of what you offer plus payment and deliveryoptions (status: draft, to be completed)
- Recipe 5: Comprehensive Example: Describing individual products or services including prices etc. (status: to be completed)
Additionally, the following more specific recipes may be relevant:
- Recipe 18: Car Maintenance, Repair, or Service: Describing the offer to repair cars or other goods (status: to be completed)
- Recipe 19: Rental: Cars, Bikes, Boats, Machinery, etc.: Describing the offer to rent out cars or other goods (status: to be completed)
- Recipe 23: Transportation: Taxi, Airfare, and Train Tickets: Describing the offer for transportation services (status: to be completed)
Describing Services in GoodRelations
GoodRelations uses one common class for products and services, enen though there can be substantial differences in modeling tangible products vs. intangible services. The main reason is that in the commercial representation, there are a lot of similarities, and, most important, most shop owners with large databases of offer data are unable to automatically separate the products from the services in their catalogs.
Basics
In GoodRelations, you always have the following main entities
- gr:BusinessEntity for the company - WHO is making the offer
- gr:LocationOfSalesOrServiceProvisioning for the store or stores - WHERE is the offer physically available
- gr:ProductOrServicesSomeInstancesPlaceholder - the article or service (several) - WHAT is being sold or provided
- gr:Offering for the offer, i.e. the PROMISE to transfer the ownership or carry out a service in your favor.
The price and payment options etc. are attached to the gr:Offering.
In the case of a service, you simply create a placeholder for all services actions that you are promising to execute. The fact that this is a service is being expressed by attaching the business function "ProvideService" to the gr:Offering node.
So basically you describe services the very same way as commodity products, with the difference that you use the gr:hasBusinessFunction property with the gr:ProvideService value.
Remark: There are also two more important types, but they are not relevant for this recipe:
- gr:ActualProductOrService - Article or Service for one particular individual, e.g. antiques or used goods.
- gr:ProductOrServiceModel - Datasheet, for product model specifications provided by the manufacturer of a good.
Background (for Experts)
The class gr:ProductsAndServices and its subclasses combine objects of two different kinds - basically,
- objects - "things that can be claimed to exist" (Proton)
- happenings
Products are basically all objects on which property rights can be obtained and transferred, while Services are basically happenings that take place in the favor of someone. So the natural modeling would be a class gr:Product and a class gr:Service.
GoodRelations, however, defines the common class gr:ProductOrService, which is union of those two classes, because with many important data sources, it is difficult to distinguish the products from the services automatically and reliably. Keep in mind that we often have shop systems with several 100k items, and very often a few percent of the entries are services.
It is basically a trade-off decision between the ease of populating the ontology vs. maximizing the reuse of the data. Another reason is that from the commercial perspective, there are many properties that are to be attached to both products and services, so we need the superclass anyway.
Please note that GoodRelations aims at services only insofar as "commodity services", like hairdressing, waste disposal, cleaning, etc. is concerned.
Example in RDFa
Copy-and-paste a snippet into your "services details" Web page
Insert the following additional mark-up directly before the closing </body> element in the source code of your Web page that contains the detailed services descriptions as shown below. In our example, the page would be
http://plushbeautybar.com/services.html... <body> <!-- HUMAN-READABLE CONTENT --> <div> Hepp's Bagels are the tastiest you can find on campus.</div> <!-- Rich meta-data --> <div xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" ... SNIPPET FROM BELOW ... </div> </body> </html>
Snippet for the basic data
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Plush Beauty Bar for Moms | Services and Pricing | spa services for mothers of young children</title> <link href="css/plushmain.css" rel="stylesheet" type="text/css" /> </head> <body> <div> ... all human-readable content to be added here ... <div> <!-- Rich meta-data in RDFa + GoodRelations --> <div xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:gr="http://purl.org/goodrelations/v1#" xmlns:services="http://plushbeautybar.com/services.html#" xmlns:base="http://www.plushbeautybar.com/#" xmlns:eco="http://www.ebusiness-unibw.org/ontologies/eclass/5.1.4/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" class="rdf2rdfa"> <div class="description" about="http://www.plushbeautybar.com/#BusinessEntity" typeof="gr:BusinessEntity"> <div rel="gr:offers"> <div class="description" about="http://plushbeautybar.com/services.html#Offering_2" typeof="gr:Offering"> <div rel="gr:acceptedPaymentMethods" resource="http://purl.org/goodrelations/v1#Cash"></div> <div rel="gr:acceptedPaymentMethods" resource="http://purl.org/goodrelations/v1#MasterCard"></div> <div rel="gr:acceptedPaymentMethods" resource="http://purl.org/goodrelations/v1#VISA"></div> <div rel="gr:availableAtOrFrom" resource="http://www.plushbeautybar.com/#LOSOSP_1"></div> <div property="rdfs:comment" content="NAIL SERVICES: Pedicure - $30 - Salon for mothers of young children in Los Angeles, California USA" xml:lang="en"></div> <div rel="gr:eligibleCustomerTypes" resource="http://purl.org/goodrelations/v1#Enduser"></div> <div property="gr:eligibleRegions" content="US" datatype="xsd:string"></div> <div rel="gr:hasBusinessFunction" resource="http://purl.org/goodrelations/v1#ProvideService"></div> <div rel="gr:hasPriceSpecification"> <div class="description" about="http://plushbeautybar.com/services.html#PriceSpec_2" typeof="gr:UnitPriceSpecification"> <div property="gr:hasCurrency" content="USD" datatype="xsd:string"></div> <div property="gr:hasCurrencyValue" content="30" datatype="xsd:float"></div> <div property="gr:hasUnitOfMeasurement" content="C62" datatype="xsd:string"></div> </div> </div> <div rel="gr:includes"> <div class="description" about="http://plushbeautybar.com/services.html#Service_2" typeof="eco:C_AKG492003-tax"> <div rel="rdf:type" resource="http://purl.org/goodrelations/v1#ProductOrServicesSomeInstancesPlaceholder"></div> <div property="rdfs:comment" content="NAIL SERVICES: Pedicure - $30 in Los Angeles, California USA" xml:lang="en"></div> <div property="rdfs:label" content="NAIL SERVICES: Pedicure - $30" xml:lang="en"></div> <div rel="rdfs:seeAlso" resource="http://www.plushbeautybar.com/services.html"></div> </div> </div> <div rel="rdfs:isDefinedBy" resource="http://www.plushbeautybar.com/services.html"></div> <div property="rdfs:label" content="NAIL SERVICES: Pedicure - $30" xml:lang="en"></div> <div rel="rdfs:seeAlso" resource="http://www.plushbeautybar.com/services.html"></div> <div property="gr:validFrom" content="2010-03-09T00:00:00-08:00" datatype="xsd:dateTime"></div> <div property="gr:validThrough" content="2011-03-09T23:59:00-08:00" datatype="xsd:dateTime"></div> </div> </div> <div rel="gr:offers"> <div class="description" about="http://plushbeautybar.com/services.html#Offering_1" typeof="gr:Offering"> <div rel="gr:acceptedPaymentMethods" resource="http://purl.org/goodrelations/v1#VISA"></div> <div rel="gr:acceptedPaymentMethods" resource="http://purl.org/goodrelations/v1#Cash"></div> <div rel="gr:acceptedPaymentMethods" resource="http://purl.org/goodrelations/v1#MasterCard"></div> <div rel="gr:availableAtOrFrom" resource="http://www.plushbeautybar.com/#LOSOSP_1"></div> <div property="rdfs:comment" content="NAIL SERVICES: Manicure (shiny buff or polish) - $25 - Salon for mothers of young children in Los Angeles, California USA" xml:lang="en"></div> <div rel="gr:eligibleCustomerTypes" resource="http://purl.org/goodrelations/v1#Enduser"></div> <div property="gr:eligibleRegions" content="US" datatype="xsd:string"></div> <div rel="gr:hasBusinessFunction" resource="http://purl.org/goodrelations/v1#ProvideService"></div> <div rel="gr:hasPriceSpecification"> <div class="description" about="http://plushbeautybar.com/services.html#PriceSpec_1" typeof="gr:UnitPriceSpecification"> <div property="gr:hasCurrency" content="USD" datatype="xsd:string"></div> <div property="gr:hasCurrencyValue" content="25" datatype="xsd:float"></div> <div property="gr:hasUnitOfMeasurement" content="C62" datatype="xsd:string"></div> </div> </div> <div rel="gr:includes"> <div class="description" about="http://plushbeautybar.com/services.html#Service_1" typeof="eco:C_AKG492003-tax"> <div rel="rdf:type" resource="http://purl.org/goodrelations/v1#ProductOrServicesSomeInstancesPlaceholder"></div> <div property="rdfs:comment" content="NAIL SERVICES: Manicure (shiny buff or polish) - $25 in Los Angeles, California USA" xml:lang="en"></div> <div property="rdfs:label" content="NAIL SERVICES: Manicure (shiny buff or polish) - $25" xml:lang="en"></div> <div rel="rdfs:seeAlso" resource="http://www.plushbeautybar.com/services.html"></div> </div> </div> <div rel="rdfs:isDefinedBy" resource="http://www.plushbeautybar.com/services.html"></div> <div property="rdfs:label" content="NAIL SERVICES: Manicure (shiny buff or polish) - $25" xml:lang="en"></div> <div rel="rdfs:seeAlso" resource="http://www.plushbeautybar.com/services.html"></div> <div property="gr:validFrom" content="2010-03-09T00:00:00-08:00" datatype="xsd:dateTime"></div> <div property="gr:validThrough" content="2011-03-09T23:59:00-08:00" datatype="xsd:dateTime"></div> </div> </div> </div> </div>
Snippet for the additional data
This section is a placeholder for future extensions.
Updating the XHTML/HTML page header
As a minimal solution, add a "xmlns" attribute with the value "http://www.w3.org/1999/xhtml" and a "version" attribute with the value "HTML+RDFa 1.0" to the <html> element of your document:
<html xmlns="http://www.w3.org/1999/xhtml" version="HTML+RDFa 1.0" xml:lang="en">
This is enough for basic access to your rich meta-data.
Your data is, however, much more visible and useful if your page is compliant with the XHTML 1.0 strict specification. If you meet that requirement, you should instead update the page header as follows:
1. Change the DOCTYPE in the header to "XHTML+RDFa"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
2. Add a "xmlns" attribute with the value "http://www.w3.org/1999/xhtml" and a "version" attribute with the value "XHTML+RDFa 1.0" to the <html> element of your document:
<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.0" xml:lang="en">
3. Check that the <head> element includes the proper content type and encoding for XHTML:
<head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/> <title>Your page title blabla...</title> </head>
Example in N3/Turtle
N3/Turtle for the basic data
@prefix base: <http://www.plushbeautybar.com/#> . @prefix services: <http://plushbeautybar.com/services.html#> . @prefix eco: <http://www.ebusiness-unibw.org/ontologies/eclass/5.1.4/#> . @prefix gr: <http://purl.org/goodrelations/v1#> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix vcard: <http://www.w3.org/2006/vcard/ns#> . @prefix xhv: <http://www.w3.org/1999/xhtml/vocab#> . @prefix xml: <http://www.w3.org/XML/1998/namespace> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . # The Business Entity is already defined in http://www.plushbeautybar.com/, so we can just reuse it here base:BusinessEntity a gr:BusinessEntity ; gr:offers services:Offering_1; gr:offers services:Offering_2. # NAIL SERVICES: Manicure (shiny buff or polish) - $25 # All pedicure basins have disposable liners to prevent the spread of fungus and infection. Basin liners, files, buffers, and orange sticks are never re-used. # Metal implements are disinfected with a hospital grade anti-fungal/viral/bacterial agent between clients. services:Offering_1 a gr:Offering ; gr:acceptedPaymentMethods gr:Cash, gr:MasterCard, gr:VISA ; gr:availableAtOrFrom base:LOSOSP_1 ; gr:eligibleCustomerTypes gr:Enduser ; gr:eligibleRegions "US"^^xsd:string ; gr:hasBusinessFunction gr:ProvideService ; gr:includes services:Service_1 ; gr:hasPriceSpecification services:PriceSpec_1 ; gr:validFrom "2010-03-09T00:00:00-08:00"^^xsd:dateTime ; gr:validThrough "2011-03-09T23:59:00-08:00"^^xsd:dateTime ; rdfs:label "NAIL SERVICES: Manicure (shiny buff or polish) - $25"@en ; rdfs:comment "NAIL SERVICES: Manicure (shiny buff or polish) - $25 - Salon for mothers of young children in Los Angeles, California USA"@en ; rdfs:isDefinedBy <http://www.plushbeautybar.com/services.html> ; rdfs:seeAlso <http://www.plushbeautybar.com/services.html> . services:Service_1 a gr:ProductOrServicesSomeInstancesPlaceholder, eco:C_AKG492003-tax; rdfs:label "NAIL SERVICES: Manicure (shiny buff or polish) - $25"@en ; rdfs:comment "NAIL SERVICES: Manicure (shiny buff or polish) - $25 in Los Angeles, California USA"@en ; rdfs:seeAlso <http://www.plushbeautybar.com/services.html> . services:PriceSpec_1 a gr:UnitPriceSpecification ; gr:hasCurrency "USD"^^xsd:string ; gr:hasCurrencyValue "25"^^xsd:float ; gr:hasUnitOfMeasurement "C62"^^xsd:string . # NAIL SERVICES: Pedicure - $30 # All pedicure basins have disposable liners to prevent the spread of fungus and infection. Basin liners, files, buffers, and orange sticks are never re-used. # Metal implements are disinfected with a hospital grade anti-fungal/viral/bacterial agent between clients. services:Offering_2 a gr:Offering ; gr:acceptedPaymentMethods gr:Cash, gr:MasterCard, gr:VISA ; gr:availableAtOrFrom base:LOSOSP_1 ; gr:eligibleCustomerTypes gr:Enduser ; gr:eligibleRegions "US"^^xsd:string ; gr:hasBusinessFunction gr:ProvideService ; gr:includes services:Service_2 ; gr:hasPriceSpecification services:PriceSpec_2 ; gr:validFrom "2010-03-09T00:00:00-08:00"^^xsd:dateTime ; gr:validThrough "2011-03-09T23:59:00-08:00"^^xsd:dateTime ; rdfs:label "NAIL SERVICES: Pedicure - $30"@en ; rdfs:comment "NAIL SERVICES: Pedicure - $30 - Salon for mothers of young children in Los Angeles, California USA"@en ; rdfs:isDefinedBy <http://www.plushbeautybar.com/services.html> ; rdfs:seeAlso <http://www.plushbeautybar.com/services.html> . services:Service_2 a gr:ProductOrServicesSomeInstancesPlaceholder, eco:C_AKG492003-tax ; rdfs:label "NAIL SERVICES: Pedicure - $30"@en ; rdfs:comment "NAIL SERVICES: Pedicure - $30 in Los Angeles, California USA"@en ; rdfs:seeAlso <http://www.plushbeautybar.com/services.html> . services:PriceSpec_2 a gr:UnitPriceSpecification ; gr:hasCurrency "USD"^^xsd:string ; gr:hasCurrencyValue "30"^^xsd:float ; gr:hasUnitOfMeasurement "C62"^^xsd:string .
N3/Turtle for the additional data
This section is a placeholder for future extensions.
Example in RDF/XML
RDF/XML for the basic data
<?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:gr="http://purl.org/goodrelations/v1#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:services="http://plushbeautybar.com/services.html#" xmlns:eco="http://www.ebusiness-unibw.org/ontologies/eclass/5.1.4/#" xmlns:base="http://www.plushbeautybar.com/#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <gr:BusinessEntity rdf:about="http://www.plushbeautybar.com/#BusinessEntity"> <gr:offers> <gr:Offering rdf:about="http://plushbeautybar.com/services.html#Offering_1"> <gr:acceptedPaymentMethods rdf:resource="http://purl.org/goodrelations/v1#Cash"/> <gr:acceptedPaymentMethods rdf:resource="http://purl.org/goodrelations/v1#MasterCard"/> <gr:acceptedPaymentMethods rdf:resource="http://purl.org/goodrelations/v1#VISA"/> <gr:availableAtOrFrom rdf:resource="http://www.plushbeautybar.com/#LOSOSP_1"/> <gr:eligibleCustomerTypes rdf:resource="http://purl.org/goodrelations/v1#Enduser"/> <gr:eligibleRegions rdf:datatype="http://www.w3.org/2001/XMLSchema#string">US</gr:eligibleRegions> <gr:hasBusinessFunction rdf:resource="http://purl.org/goodrelations/v1#ProvideService"/> <gr:includes> <gr:ProductOrServicesSomeInstancesPlaceholder rdf:about="http://plushbeautybar.com/services.html#Service_1"> <rdf:type rdf:resource="http://www.ebusiness-unibw.org/ontologies/eclass/5.1.4/#C_AKG492003-tax"/> <rdfs:label xml:lang="en">NAIL SERVICES: Manicure (shiny buff or polish) - $25</rdfs:label> <rdfs:comment xml:lang="en">NAIL SERVICES: Manicure (shiny buff or polish) - $25 in Los Angeles, California USA</rdfs:comment> <rdfs:seeAlso rdf:resource="http://www.plushbeautybar.com/services.html"/> </gr:ProductOrServicesSomeInstancesPlaceholder> </gr:includes> <gr:hasPriceSpecification> <gr:UnitPriceSpecification rdf:about="http://plushbeautybar.com/services.html#PriceSpec_1"> <gr:hasCurrency rdf:datatype="http://www.w3.org/2001/XMLSchema#string">USD</gr:hasCurrency> <gr:hasCurrencyValue rdf:datatype="http://www.w3.org/2001/XMLSchema#float">25</gr:hasCurrencyValue> <gr:hasUnitOfMeasurement rdf:datatype="http://www.w3.org/2001/XMLSchema#string">C62</gr:hasUnitOfMeasurement> </gr:UnitPriceSpecification> </gr:hasPriceSpecification> <gr:validFrom rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2010-03-09T00:00:00-08:00</gr:validFrom> <gr:validThrough rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2011-03-09T23:59:00-08:00</gr:validThrough> <rdfs:label xml:lang="en">NAIL SERVICES: Manicure (shiny buff or polish) - $25</rdfs:label> <rdfs:comment xml:lang="en">NAIL SERVICES: Manicure (shiny buff or polish) - $25 - Salon for mothers of young children in Los Angeles, California USA</rdfs:comment> <rdfs:isDefinedBy rdf:resource="http://www.plushbeautybar.com/services.html"/> <rdfs:seeAlso rdf:resource="http://www.plushbeautybar.com/services.html"/> </gr:Offering> </gr:offers> <gr:offers> <gr:Offering rdf:about="http://plushbeautybar.com/services.html#Offering_2"> <gr:acceptedPaymentMethods rdf:resource="http://purl.org/goodrelations/v1#Cash"/> <gr:acceptedPaymentMethods rdf:resource="http://purl.org/goodrelations/v1#MasterCard"/> <gr:acceptedPaymentMethods rdf:resource="http://purl.org/goodrelations/v1#VISA"/> <gr:availableAtOrFrom rdf:resource="http://www.plushbeautybar.com/#LOSOSP_1"/> <gr:eligibleCustomerTypes rdf:resource="http://purl.org/goodrelations/v1#Enduser"/> <gr:eligibleRegions rdf:datatype="http://www.w3.org/2001/XMLSchema#string">US</gr:eligibleRegions> <gr:hasBusinessFunction rdf:resource="http://purl.org/goodrelations/v1#ProvideService"/> <gr:includes> <gr:ProductOrServicesSomeInstancesPlaceholder rdf:about="http://plushbeautybar.com/services.html#Service_2"> <rdf:type rdf:resource="http://www.ebusiness-unibw.org/ontologies/eclass/5.1.4/#C_AKG492003-tax"/> <rdfs:label xml:lang="en">NAIL SERVICES: Pedicure - $30</rdfs:label> <rdfs:comment xml:lang="en">NAIL SERVICES: Pedicure - $30 in Los Angeles, California USA</rdfs:comment> <rdfs:seeAlso rdf:resource="http://www.plushbeautybar.com/services.html"/> </gr:ProductOrServicesSomeInstancesPlaceholder> </gr:includes> <gr:hasPriceSpecification> <gr:UnitPriceSpecification rdf:about="http://plushbeautybar.com/services.html#PriceSpec_2"> <gr:hasCurrency rdf:datatype="http://www.w3.org/2001/XMLSchema#string">USD</gr:hasCurrency> <gr:hasCurrencyValue rdf:datatype="http://www.w3.org/2001/XMLSchema#float">30</gr:hasCurrencyValue> <gr:hasUnitOfMeasurement rdf:datatype="http://www.w3.org/2001/XMLSchema#string">C62</gr:hasUnitOfMeasurement> </gr:UnitPriceSpecification> </gr:hasPriceSpecification> <gr:validFrom rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2010-03-09T00:00:00-08:00</gr:validFrom> <gr:validThrough rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2011-03-09T23:59:00-08:00</gr:validThrough> <rdfs:label xml:lang="en">NAIL SERVICES: Pedicure - $30</rdfs:label> <rdfs:comment xml:lang="en">NAIL SERVICES: Pedicure - $30 - Salon for mothers of young children in Los Angeles, California USA</rdfs:comment> <rdfs:isDefinedBy rdf:resource="http://www.plushbeautybar.com/services.html"/> <rdfs:seeAlso rdf:resource="http://www.plushbeautybar.com/services.html"/> </gr:Offering> </gr:offers> </gr:BusinessEntity> </rdf:RDF>
RDF/XML for the additional data
This section is a placeholder for future extensions.
Extensions and Improvements
Determine the geographical position of your offices and stores
You can attach the address and geo position of your main office and of your shop or shops to the respective elements, even if you don't know the latitude and longitude of your addresses. Simply use free online services to determine them, e.g. the excellent one by Stephen P. Morse at http://stevemorse.org/jcal/latlon.php.
Adding multiple stores
Simply add two or more gr:hasPOS properties to the gr:BusinessEntity and define more than one gr:LocationOfSalesOrServiceProvisioning nodes.
Query Example
# Find someone who provides a service that contains "manicure" in the description
SELECT ?offer ?uri ?price ?currency WHERE
{
?offer a gr:Offering .
?offer gr:hasBusinessFunction gr:ProvideService .
{
{
?offer gr:includes ?service.}
UNION
{
?offer gr:includesObject ?o .
?o gr:typeOfGood ?service .
}
}
OPTIONAL {?service rdfs:label ?label}
OPTIONAL {?service rdfs:description ?description}
OPTIONAL {?service rdfs:seeAlso ?uri}
OPTIONAL {?service foaf:page ?uri}
?offer gr:hasPriceSpecification ?p .
?p a gr:UnitPriceSpecification .
?p gr:hasCurrency ?currency .
?p gr:hasCurrencyValue ?price .
FILTER (regex(?label, "manicure", "i") || regex(?description, "manicure", "i"))
}
Unprocessed Resources
Prices per sqft etc.: http://www.monsterclean.net/prices.html
Bank Example: eclassOWL 5.1.4:
Classification: 25-15-00-00 [ AAB447003 ]
Preferred Name: Finance and insurance services
Definition:
Keywords: Financial service, Insurance service
