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.
Martin Hepp
martin.hepp at ebusiness-unibw.org
Sun Oct 10 18:10:42 CEST 2010
Hi Ben, Apologies for the delay, the GoodRelations service update got in my way ;-) In a nutshell, all what you seem to need is already built into GoodRelations since day one ;-) See inline comments: On 09.10.2010, at 12:27, Ben Dougall wrote: > Hello, (resending this, as no answer and in case it didn't get > through, also it's modified somewhat) > > I can see the standard examples of opening times which show how to > state Mon-Fri opening times, then Sat opening times here: > http://www.ebusiness-unibw.org/wiki/GoodRelationsQuickstart#Shop.2C_Restaurant.2C_or_Store.2C_and_Opening_Hours > > Three things further to that example, relating to opening times: > > 1. > How should it be done if you have varying times for weekdays? Say > you've got these opening times: > > Monday: 8am - 5.30pm > Tuesday: 8am - 5.30pm > Wednesday: 8am - 1pm > Thursday: 8am - 5.30pm > Friday: 8am - 6.30pm > Saturday: 8am - 1pm > Sunday: Closed > > So Mon, Tue, Thu are the same as each other. > Wed and Sat are the same as each other. > Then there's Fri. > > Do you group them in the RDF data -- the order doesn't matter? So > for Mon, Tue, Thu it'd be this maybe?: > > <div rel="gr:hasOpeningHoursSpecification"> > <div about="#???????" typeof="gr:OpeningHoursSpecification"> > <div property="gr:opens" content="08:00:00" > datatype="xsd:time"></div> > <div property="gr:closes" content="17:30:00" > datatype="xsd:time"></div> > <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/goodrelations/v1#Thursday > "></div> > <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/goodrelations/v1#Tuesday > "></div> > <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/goodrelations/v1#Monday > "></div> > </div> > </div> > > What goes where the ???'s are? Maybe #mon_tue_thu ? But it seems > #mon_fri means Mon to Fri so #mon_tue_thu probably wouldn't work. In > that case can you not group the days of the same times regardless of > their order in the week, like I have above? Also is the order of the > <div rel="gr:hasOpeningHoursDayOfWeek"... lines meaningful? I guess > not seeing as they're in reverse in the example code. 1. The order of the blocks does not matter, just the order of elements (tags) inside the blocks. The order of the <div rel="gr:hasOpeningHoursDayOfWeek"... lines does not matter, as long as they are on the same level. 2. You can use any text you want for the about="#???" part, as long as you don't use it for any other purpose. It's just an identifier and does not carry any real meaning. You could even omit the about="" attribute completely, creating RDF blank nodes. That may negative affect the visibility / accessibility of your data, but would be formally correct. 3. Here is the proper code for your example: <!-- in RDFa 1.1, you can use the abbreviation: <div profile="http://www.heppnetz.de/grprofile/ "> --> <div xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/ " xmlns:gr="http://purl.org/goodrelations/v1#" xmlns:vcard="http://www.w3.org/2006/vcard/ns#" xmlns:xsd="http://www.w3.org/2001/XMLSchema# "> <div about="#store" typeof="gr:LocationOfSalesOrServiceProvisioning"> <div property="rdfs:label" content="Pizzeria La Mamma"></div> <div rel="vcard:adr"> ... vcard part omitted in here </div> </div> <div rel="gr:hasOpeningHoursSpecification"> <div about="#mon_tue_thu" typeof="gr:OpeningHoursSpecification"> <div property="gr:opens" content="08:00:00" datatype="xsd:time"></div> <div property="gr:closes" content="17:30:00" datatype="xsd:time"></div> <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/godrelations/v1#Thursday "></div> <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/goodrelations/v1#Tuesday "></div> <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/goodrelations/v1#Monday "></div> </div> </div> <div rel="gr:hasOpeningHoursSpecification"> <div about="#wed_sat" typeof="gr:OpeningHoursSpecification"> <div property="gr:opens" content="08:00:00" datatype="xsd:time"></div> <div property="gr:closes" content="13:00:00" datatype="xsd:time"></div> <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/goodrelations/v1#Wednesday "></div> <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/goodrelations/v1#Saturday "></div> </div> </div> <div rel="gr:hasOpeningHoursSpecification"> <div about="#fri" typeof="gr:OpeningHoursSpecification"> <div property="gr:opens" content="08:00:00" datatype="xsd:time"></div> <div property="gr:closes" content="18:30:00" datatype="xsd:time"></div> <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/goodrelations/v1#Friday "></div> </div> </div> <div rel="foaf:page" resource=""></div> </div> </div> > > I need to write some PHP code which outputs the correct RDF data > based on what the opening times are currently set to, so I need to > know the general rules for how the days should be grouped/marked up > depending on whether they have the same or different opening times > as other days. You may want to look at the GoodRelations Snippet Generator and the GoodRelations Annotator Tools and play with their output: http://www.ebusiness-unibw.org/tools/grsnippetgen/ http://www.ebusiness-unibw.org/tools/goodrelations-annotator/ The Annotator tool is more flexible (but also more complex to use). But it will show you how to encode any opening hours pattern. > > 2. > How should opening times which differ to the standard/default times > for a specific date be specified? For example, for a bank holiday, > which are usually on Mondays, so that would be closed on a specific > Monday. How would that be specified? Presumably specific date > specifications over-ride the standard/default Mon-Sun times? In general, public holidays in the region of the store will superseed any pattern. So if a store says its open Mondays from 8:00 - 18:00, don't expect it to be open of that Monday is bank holiday. If you want to specify opening hours for all public holidays, you can use http://purl.org/goodrelations/v1#PublicHolidays as a "dummy" day of the week. If you want to be more specific, simply attach gr:validFrom and gr:validThrough to your opening hours node: <div about="#store" typeof="gr:LocationOfSalesOrServiceProvisioning"> <div property="rdfs:label" content="Pizzeria La Mamma"></div> <div rel="vcard:adr"> ... vcard part omitted in here </div> </div> <div rel="gr:hasOpeningHoursSpecification"> <div about="#mon_tue_thu" typeof="gr:OpeningHoursSpecification"> <div property="gr:opens" content="08:00:00" datatype="xsd:time"></div> <div property="gr:closes" content="17:30:00" datatype="xsd:time"></div> <div property="gr:validFrom" content="2010-10-10T00:00:00Z" datatype="xsd:dateTime"></div> <div property="gr:validThrough" content="2010-10-10T23:59:59Z" datatype="xsd:dateTime"></div> <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/godrelations/v1#Thursday "></div> <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/goodrelations/v1#Tuesday "></div> <div rel="gr:hasOpeningHoursDayOfWeek" resource="http://purl.org/goodrelations/v1#Monday "></div> </div> </div> You must add these two lines <div property="gr:validFrom" content="2010-10-10T00:00:00Z" datatype="xsd:dateTime"></div> <div property="gr:validThrough" content="2010-10-10T23:59:59Z" datatype="xsd:dateTime"></div> to any <div about="#..." typeof="gr:OpeningHoursSpecification"> block. The time interval can be of any size - a single day, a week, a month, a year. In GoodRelations, you can attach validity to opening hour information, offers, or any pricing information. Thus, consumers of your data do not have guess on how long your promises will hold. > > 3. > Do any of the search engines use the opening times info to any > visible effect yet? Is there anything else using opening times info > at the moment? I don't know whether any of the top three search engines will be using opening hours any time soon, but clearly, opening hours are extremely valuable (and straightforward to implement) for location-based apps and services. I expect many apps for smartphones to honor opening hour info shortly. Best Martin > > Thanks, Ben. > > > _______________________________________________ > goodrelations mailing list > goodrelations at ebusiness-unibw.org > http://ebusiness-unibw.org/cgi-bin/mailman/listinfo/goodrelations