As discussed in https://lists.w3.org/Archives/Public/public-schemaorg/2016Nov/0050.html onwards, it would be helpful if I could use schema:openingHours on a schema:ContactPoint. Currently, schema:openingHours can only be used on a CivicStructure or a LocalBusiness, which seems overly restrictive.
The particular case is the EC's ISA Programme Core Organisation Vocabulary where I want to provide a contact point for the organisation. That contact point (there may be many) will have regular opening hours (e.g. Mo-Fr 09:00-17:00) which is nice and simple, as well as exceptions (Christmas Day etc). The OpeningHoursSpecification class supports all this but it requires simple statements to be expressed in a complex manner. The 2nd example given for OpeningHoursSpecification is helpful in that it shows how to do exactly what I'd like to do - give the generic opening hours as text and then the exceptions in a complex format. But it does it for a Store, a subclass of LocalBusiness. A single Civic Structure may house several public organisations and each of those may have different contact points so I need more flexibility without, I hope, requiring the kind of markup bloat necessary to specify that on schema:Monday the contact point opens at 09:00 and closes at 17:00; on schema:Tuesday it opens at 09:00 and closes at 17:00 etc. etc.
Sounds sensible enough to me. Any objections? @vholland @chaals @tmarshbing @nicolastorzec @mfhepp @scor @rvguha @betehess
@danbri Just make sure we clean up the description on openingHours
"The general opening hours for a business or a contact at a business ..."
I should note that we also have a similar construct for handling multiple departments of an Organization, each with associated contact/opening hour details: there is a http://schema.org/department property that can be used to relate Organizations, also http://schema.org/subOrganization / parentOrganization. So this case for ContactPoint I'd suggest may be best for those cases where it is a stretch to think of the contactable party being an organization.
I should have said "So in this request regarding ContactPoint, I'd suggest considering first modeling things as Organizations, but if that doesn't work e.g. for individuals providing a service, sure..."
In response to @danbri, I'd like to note that (in a pure linked data view) an Organisation is something that exists outside the physical realm and therefor cannot have opening hours. Rather, it's the physical locations of that organisations that have opening hours. A ´LocalBusiness´ can be seen as an exception, since it specifically merges the organisation and its physical location.
+1 to @rvguha. Looking at the usage, authors are conflating LocalBusiness with larger, non-physical entities. If we want to formally separate out Place and Organization, we need better examples and possibly new schema.
To the question at hand, +1 for adding OpeningHours.
There is no "pure linked data view", in my view. Plenty of widely used RDF vocabularies from the Linked Data environment (Dublin Core, FOAF, SKOS, RSS, SIOC etc.) make very similar pragmatic tradeoffs to those we've made with schema.org.
Maybe the wording of openingHours could be tweaked to avoid "for a business". The underlying idea is to offer a simplistic division of time into periods when the entity is generally available for doing whatever it is that it does, and periods when it is broadly unavailable. There are many situations that this fails to capture perfectly, but that's neither a failing of the representation nor of the entities involved, just the unavoidable messiness of real life.
Real world usage will mainly follow the schema specification. By preventing real life messiness from entering the schema as much as possible, we're preventing a lot of future issues in my opinion. But yes, there's no absolute truth. :)
That said, I support Phil's suggestion of adding opening hours to a ContactPoint (rather than to Organisation). I do think that Phil means openingHoursSpecification rather than openingHours?