I would definitely look into using Google calendars. This is Drupal-specific, but perhaps could be easily translated for other purposes?
I have used both G-Cal Events and (more recently) Agenda modules, which pull information from Google calendars. I originally used it (g-cal events) to set up a site for a library that would display the events/meetings in its different meeting rooms (some of which were repeating events). The google calendars were "maintained" by the different departments (Children's, Reference, Administration, etc.), and all tied to one main calendar from which the module pulled the data for display. They both are configurable (through the gui, and fairly easily within the code if you know a little php) to set how, when, and how long to display the calendar item.
The only drawbacks are the limitations to Google Calendars itself, which may not work for you, but I find it flexible enough for the sites I've used it for. I also like how you can link and control different calendars and set visibility, so the relevant library or department can manage its own calendar.
On Jun 7, 2011, at 11:33 PM, Jonathan Rochkind wrote:
> I wonder if you could get by using Google Calendar as the 'interface', consumed via client and then published in whatever human-readable and semantic formats you wanted. I _think_ Google Calendar lets you create repeating events, which should then be exposed by it's iCal API.
> I think of this because there was in fact a Code4Lib Journal article about that, although I forget the details:
> From: Code for Libraries [[log in to unmask]] on behalf of Brice Stacey [[log in to unmask]]
> Sent: Tuesday, June 07, 2011 11:27 PM
> To: [log in to unmask]
> Subject: Re: [CODE4LIB] RDF for opening times/hours?
> It needs to be simple and flexible such that a layman can manage it. Currently tools are designed for easy data transfer to databases, e.g. a list of defaults for a given date range and then dozens of exceptions for specific dates. Most people are overwhelmed that. Consequently, changing hours often involves not only administrative changes but also assistance from technical people. It needs to be simple for admin assistants to "refactor" the hours.
> Lastly, from my experience the biggest problem is propagating changes throughout multiple systems. Yes, not all changes can be done by administrative assistants from some single management tool (e.g. systems staff may have to modify the ILS calendar) but there needs to be an easy way to determine the specific changes between each change... Like a diff, so that changes are easy to delegate to appropriate staff.
> Looking over my email, such features would be incredibly difficult to implement well, but at least from my experience they're the actual problems that plague libraries. Honestly, we'll conform to whatever technical implementation you choose (hell, I'd accept some bizarre MARC-encoded hours) so long as you actually tackle the real problems. Otherwise, it's just some web service that can be easily implemented in an hour and is useless.
> Brice Stacey
> UMass Boston
> Sent from my iPad
> On Jun 7, 2011, at 5:28 PM, "Doran, Michael D" <[log in to unmask]> wrote:
>> I am building a little web service that spits out info on when the libraries (a central library and two branches) are open and what the hours are for that day. As those who work in academic libraries know, it's not the *regular* hours, but all the exception dates/hours that are important (Spring break, Maymester, intersession, Christmas holidays, yadda, yadda). This app knows all the exceptions.
>> The basic idea is that it provides real-time, "is it open right now" info for *today* (as well as today's hours). If this sounds "mobile-y", it's because it was originally conceived as an addition to our Library's mobile website.
>> I'm trying to figure out the most flexible output markup (RDF schema?), one that would allow the widest use of the web service in addition to outputting HTML markup for a mobile site page.
>> I've googled and found a few things, but nothing that really seems to fit. Most of them (e.g. the RDF "OpeningHoursUseCase" on W3C ) are more about rules for recurring intervals. My interest is not in representing the totality of the schedule (again, because of all the exception dates/times) but in representing one day (i.e. today). So I don't care about representing recurring intervals.
>> And actually, the "Outsider Comments" use cases at the bottom of the "OpeningHoursUseCase" site mentioned above are almost exactly what I'm trying to satisfy (just substitute "library" where you see "shop" or "restaurant):
>> I'm looking for exactly this xml, but this seems to
>> be very complex, and going off in different tangents.
>> Here are my use cases:
>> - I wish to go to a shop or restaurant, and I wish to
>> know if it's open for the next few hours.
>> - It's late at night, and I need to go to the drug
>> store or a small market. I wish to be able to search
>> for a business that is open right now. The search
>> should happen on a mapping site, or a web search site.
>> - I have business with a microbusiness that's open only
>> a few days a week. It's important enough for me to
>> bring their schedule into my calendar, temporarily,
>> so I can get there when they're open.
>> - I want to coordinate a trip and run a few errands.
>> I would like to get all the hours for relevant
>> businesses on a specific day. I can sort through the
>> hours myself.
>> I also saw that "opening times in RDF" was listed as a use case in the Code4Lib wiki "Library Ontology" page . However in the "Relevant formats and models" section the links just complete the loop back to things like the OpeningHoursUseCase previously mentioned.
>> Anyone done anything like this? Any ideas? Suggestions? (This is my first baby-step into RDF, so don't assume any prior knowledge on my part.)
>> -- Michael
>>  http://www.w3.org/wiki/OpeningHoursUseCase
>>  http://wiki.code4lib.org/index.php/Library_Ontology
>> # Michael Doran, Systems Librarian
>> # University of Texas at Arlington
>> # 817-272-5326 office
>> # 817-688-1926 mobile
>> # [log in to unmask]
>> # http://rocky.uta.edu/doran/
[log in to unmask]