IntroductionWhen world's collide sometimes things happen that can be useful. This is _not_ one of those useful things, but a collision of two worlds none-the-less...
ExcelRDF is a proposed serialisation for RDF using the Microsoft Excel Spreadsheet format. This work was inspired by the discussions in the semantic web community about Linked Data and whether or not it mandates the use of RDF. This document is not trying to prove a point, insult anyone or come down on either side of the argument. I just noticed that it hadn't been done and it didn't seem too difficult. Of course, that it hadn't been done should have been enough of a warning to me that it is not, in any sense, desirable.
Conventions used in this documentThe key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](http://www.ietf.org/rfc/rfc2119.txt).
OverviewWhen a server receives a HTTP or HTTPS request for a resource that is described in RDF and the client indicates that it is willing to accept content of type application/vnd.ms-excel the server MAY respond with a Microsoft Excel spreadsheet meeting the following conventions.
- The spreadsheet MUST contain one or more sheets that meet the following conventions.
- A sheet SHOULD contain zero or more rows of RDF data.
- Column A of each non-empty row of a sheet SHOULD contain a URI indicating the Subject of a statement.
- Column B of each non-empty row of a sheet SHOULD contain a URI indicating the Property of a statement.
- Column C MAY contain either a URI or a literal value as the Object of a statement.
- If Column C contains a literal value then Column D MAY contain a language identifier in accordance with [IETF BCP 47](http://www.w3.org/TR/REC-xml/#RFC1766).
- If Column C contains a literal value then Column E MAY contain a type specifier indicating the type of the literal value.
ExampleThe attached example Microsoft Excel spreadsheet contains [RDF from the dbpedia project describing Annette Island Airport](http://dbpedia.org/resource/Annette_Island_Airport) using the conventions described above.
ExcelRDF Example File
Use CasesExcelRDF may be useful where it is desirable to produce charts showing characteristics of a dataset, such as the relative distribution of types within a dataset. Perhaps analysing the count of particular properties. I can think of no obvious way to assess graph characteristics such as linkiness, but you could do things like word counts in literals, or working out how of the literal data is in French.
ExcelRDF may be useful where a specific contract, policy or agreement means that the data must be delivered as an Excel spreadsheet while the underlying data is more useful in RDF.
ExcelRDF may be useful if you wish to be deliberately obtuse.
Let me point you to a tool that represents any Linked Data RDF description as csv file (which conveys essentially the same information as a spreadsheet) by the means of a virtual file system: the paper is at http://events.linkeddata.org/ldow2009/papers/ldow2009_paper1.pdf and you can download the virtual file system driver at http://lodfs.sourceforge.net
Nice. The point this proves to me is that RDF does not mean XML, or any other particular serialization. An Excel spreadsheet prepared according to your spec would in fact _BE_ RDF. So it's impact on the argument about whether linked data needs to be RDF.... is unclear.
If column C may contain either a URI or a literal value, how do you tell the difference between the two? Some literal values look like URIs (eg the value of dc:identifier). It's a short step from this to RDF/CSV, which would arguably be more useful (since it wouldn't be surrounded in MS Excel cruft).
@Jonathan - yes, a very important point. @Jeni RDF/CSV was my initial thought, but Excel seemed somewhat more perverse... Suggestions as to how to distinguish URIs and literals in Object columns welcomed. New someone would spot that :-( Glad it was you.