- From: Frederick Giasson <fred@fgiasson.com>
- Date: Thu, 17 Dec 2009 09:29:30 -0500
- To: Jeni Tennison <jeni@jenitennison.com>
- Cc: public-lod@w3.org, John Sheridan <John.Sheridan@nationalarchives.gsi.gov.uk>
Hi Jeni!
> Thanks, that looks interesting, and the idea of supporting similar
> mappings to XML and to CSV is very attractive.
I also find this attractive :)
> But I couldn't actually work out how I would use it in the kind of
> situation we find ourselves in. We have, for example, RDF like this:
>
> http://education.data.gov.uk/doc/school/520965.rdf
>
> which we want to make readily usable by people creating mash-ups. What
> are the (minimal) definitions that we have to create to use irON to
> create customised JSON/CSV/XML from this RDF?
Normally, it is the other way around: people do use such notations (irON
with its different profiles) to "intuitively" (at least, more
intuitively) create data. So, one of the first goal of irON was to help
data publishers to publish data without knowing and understanding all
the specificities of RDF and all its serialization, while keeping it
quite flexible to be able to describe complex data models. However, one
of the requirement of irON was to be able to easily map it to RDF (when
reading the specification, you will notice some similar concepts, which
is a consequence of this requirement).
But naturally, if you primary source of data is in RDF, and you want to
describe it in irON (with let sa, the irJSON profile), then can easily
do the transformations (since RDF is probably the most flexible
description framework out there, it is not a big deal to transform it in
any other notation).
To make it complete, what would be required are three things:
(1) the linkage schema which describe the transformation rules
(2) the "schema" itself which describe the usage of the type/attributes
(this is the ontology)
(3) the record instances file (which is/are the dataset files)
Lets take that RDF from your example above:
==============
<rdf:Description
rdf:about="http://education.data.gov.uk/doc/school/520965">
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Document"/>
<rdf:type rdf:resource="http://purl.org/dc/dcmitype/Text"/>
<foaf:primaryTopic
rdf:resource="http://education.data.gov.uk/id/school/520965"/>
<dct:title>Linked Data for Stepping Stones Nursery Group</dct:title>
<dct:hasFormat
rdf:resource="http://education.data.gov.uk/doc/school/520965.rdf"/>
<dct:hasFormat
rdf:resource="http://education.data.gov.uk/doc/school/520965.html"/>
<dct:hasFormat
rdf:resource="http://education.data.gov.uk/doc/school/520965.json"/>
<dct:hasFormat
rdf:resource="http://education.data.gov.uk/doc/school/520965.ttl"/>
</rdf:Description>
==============
Lets start with the linkage schema that would link the irON
attributes/types to the RDF properties/classes
==============
{
"linkage": {
"version": "0.10",
"linkedFormat": "application/rdf+xml",
"prefixList": {
"dcterms": "http://purl.org/dc/terms/",
"dctypes": "http://purl.org/dc/dcmitype/",
"foaf": "http://xmlns.com/foaf/0.1/"
},
"typeList": {
"Document": {
"mapTo": "foaf:Document"
}
"Text": {
"mapTo": "dctypes:Text"
}
},
"attributeList": {
"primaryTopic": {
"mapTo": "foaf:primaryTopic"
},
"title": {
"mapTo": "dcterms:title"
},
"hasFormat": {
"mapTo": "dcterms:hasFormat"
}
}
}
}
==============
Note 1: you can change the name of the attributes, I used the same as
the one of the ontology to save some time...
Note 2: I would suggest you to take a look at the Bibliographic Ontology
for some of the "documents" description in your dataset:
http://bibliontology.com (check the group and the ontology description).
Then you can describe a "schema" to give more information about the
usage of these properties to the data consumers
==============
{
"schema": {
"version": "0.10",
"date": "17 December, 2009",
"attributeList": {
"title": {
"prefLabel": "title",
"description": "Title of a document",
"allowedType": ["Document", "Text"],
"allowedValue": {"primitive": "String"}
},
......
}
}
}
==============
*** As I noted in another email I send, the specification section
related to schemas as been greatly upgraded, but we yet have to update
the online document.
Then you can describe your record, in a dataset file, like this:
==============
{
"dataset": {
"id": "http://education.data.gov.uk/...",
"prefLabel": "Dataset name",
"description": "...",
"source": {
"name": "UK Government Data Developers",
"ref": "@abc"
},
"creationDate": "02/09/2009",
"linkage": "linakge_file_above.json",
"schema": "schema_file_above.json"
},
"recordList": [
{
"id": "id_1",
"type": "Document",
"type": "Text",
"title": "Linked Data for Stepping Stones Nursery Group",
"primaryTopic": {
"ref": "@@http://education.data.gov.uk/id/school/520965"
}
....
}
]
}
==============
Note 1: You would describe all the records of your dataset(s) in
this/these dataset files, in the recordList section.
Note 2: @ => a reference to a local record, @@ => a reference to an
remote record. Check the record reference section for more information
So, that is it. If you check the specification document, you can easily
translate this in the irXML and commON profile (I particularly like
commON to mockup things).
Also, you have access to a irJSON (to be updated, a new version has been
developed, but not yet made accessible) and a commON PHP parser:
http://code.google.com/p/iron-notation/downloads/list
But like any such notation, there are many ways to describe the same
data. So, keep asking questions if you have any other. I will redirect
you to the proper section in the documentation in the worse case :)
Thanks!
Take care,
Fred
Received on Thursday, 17 December 2009 14:30:00 UTC