Calendar Challenges

A real good networking calendaring application, with knowledge of not only when, but also who and where, should be able to handle the following use cases:

  1. PathCrossSuppose I’m travelling to Boston and San Francisco in the next couple months. I’d like my machine to let me know I have a FriendOfaFriend who also lives there or plans to be there

    Given:

    1. My calendar
    2. My network of friends (and thus implicitly their calendars and their friends’ calendars)

    Provide:

    1. A list of coming events, where I will be co-located with at least one of my friends or a friend of theirs

    Bonus: Be fuzzy and suggest rearranging travel plans or make new to maximize pathcrossings.

  2. Meeting planner — Suppose a group of otherwise independent people frequenting an IRC channel wish to plan for a ScheduledTopicChat

    Given:

    1. A group of people (and thus their calendars, possibly only with free/busy information)

    Provide:

    1. A list of possible future dates/times for a meeting involving the entire group

    Bonus: Accept a fixed location as well, for meetings at a PathCross.

  3. Maximal scheduleSuppose the Natfilm Festival (or its successor CPH:PIX) is coming up, and I’d like to invite a number of friends to join me for as many showings as possible

    Given:

    1. My calendar (possibly only with free/busy information)
    2. A list of showings (with location)
    3. A group of people (and thus their calendars, possibly only with free/busy information)

    Provide:

    1. A non-overlapping list of possible showings, that leaves enough time for transportation

    Bonus: Based on the original input, a selected subset of the showings, and the non-overlapping list, provide a new non-overlapping list, that includes the selected subset.

Dopplr does parts of the first use case quite well, with added bonuses, but doesn’t quite meet the goals entirely.

Can I have this now — or do I need to build it myself?

The Web is 20 Today!

Today is the day that has the world celebrating 20 years with the World Wide Web, and even though not everyone grasps the distinction between the internet and the World Wide Web, even fewer know about the original intent of Tim Berners-Lee’s invention.

In “Information Management: A Proposal“, the very first figure shows nodes with arrows between them, illustrating links — fitting for a document describing hypertext:

image1

But look closer; the arcs have labels, describing binary relations! And the nodes are not only documents, but also databases and real life objects!

This is what the World Wide Web is all about — neither the Semantic Web nor Linked Data are afterthoughts, they are actually part of the original vision.

So now that you know, go fetch — it has taken us twenty years to get to where we are today, let’s make sure it doesn’t take that long to get the rest of the way…

The Lazy Bloggers Post

Blimey! I just climbed out from under my rock and realised I have not updated this since they invented sliced bread… You would not believe how much more of a drama I could make that. Seriously!.

I am flat out like a lizard drinking with feeding the little people, watching the grass grow, just generally being an embarrassment to anyone unfortunate to cross my path, my day seems to be packed from sun up to dusk. I am not complaining though. I need a nap.

I won’t promise anything to you but I will write something that makes sense soon. Honestly! No Joke!.

via, generate your own lazy blog post

Introducing SPO(G)

SPO(G) is not a new syntax, nor a format or a protocol. It is, however, a syntactic profile and a convention.

<sparql xmlns="http://www.w3.org/2005/sparql-results#">
  <head>
    <variable name="g"/>
    <variable name="s"/>
    <variable name="p"/>
    <variable name="o"/>
  </head>
  <results>
    ...
  </results>
</sparql>

I have previously written about exchange of named RDF graphs through the use of quads-in-zips, and while that approach works just fine, it needs to be implemented on both sides of the exchange.

This is also true for SPO(G), but with SPARQL implementations being widespread, the export side is already in place all around the web, and the import side is quite easily implemented — I have sent an implementation of SPARQLXMLResultLoader for ARC to bengee, and while he is also busy working on a streaming serialiser, it seems likely it’ll be a part of a coming release of ARC.

As can be seen from the example, SPO(G) is simply a constrained SPARQL Query Results XML Format: It needs to have three or four variables, s, p, and o must be present, with g being optional (making it YARS). For all results, all variables must be bound.

SPO(G) isn’t as compact as quads-in-zips, but there’s no reason for it not to be compressed during exchange, either through a manual process or via the usual gzip-encoding on-the-fly.

I should perhaps write it up properly, but I think I’d rather go off and implement it for Redland.