[VoCamp Discuss] Vocabify
Keith Alexander
k.j.w.alexander at gmail.com
Wed Mar 25 08:54:09 PDT 2009
Hi list,
I was fortunate enough to attend vocamps oxford and galway, and one thing
that seemed to come up quite a few times during both vocamps was the
desire to communicate, machine-readably, how a vocabulary's terms could be
combined with terms from other vocabularies in modeling data.
Somehow connected with this, was the observation that, in creating
vocabularies, it often seems easier and more fruitful to start, not by
defining classes and properties, but by creating some instance data, and
declaring a namespace that you can invent new terms in as you go along.
Often, I leave writing the actual term definitions to the end of the
process, and sometimes neglect it altogether if it doesn't seem so
important. From what I can tell, this seems quite a common practice.
So the other night, I had the idea to write Vocabify [1]. Vocabify takes
these inputs:
* Some sample instance data (in turtle), using terms in a vocabulary that
hasn't actually been written yet.
* the namespace URI of that vocabulary
* your preferred prefix for that namespace URI (optional)
Vocabify then looks at how these terms are used, and creates a schema
defining them. The terms defined are linked to the instance data resources
they are used in, using the openvocab:exampleResource[2]. This lets
someone browsing the schema definition follow the exampleResource link to
see how the term is intended to be used. I think it would probably be wise
to use blank nodes when you create the instance data (if you don't want
them to be dereferencable or linked to from outside your schema).
So what you get is a turtle representation of a schema generated from your
instance data. You can then edit it to your satisfaction and publish it at
its namespace URI.
(The code is at
http://n2.talis.com/svn/playground/kwijibo/PHP/vocabify/trunk/ and open
source: GPL 3.)
Hope others find it useful,
Keith
ps: I've found open.vocab.org pretty useful a few times now for those
times when you want to quickly define a new term, without having to create
a new vocabulary, or publish it yourself.
[1] http://kwijibo.talis.com/vocabify/
[2] http://open.vocab.org/terms/exampleResource
More information about the discuss
mailing list