[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