W3C home > Mailing lists > Public > public-esw-thes@w3.org > February 2009

Re: Experimental Ruby SKOS API

From: Dan Brickley <danbri@danbri.org>
Date: Wed, 18 Feb 2009 16:22:43 +0100
Message-ID: <499C27C3.6070603@danbri.org>
To: Simon Jupp <simon.jupp@manchester.ac.uk>
Cc: SKOS <public-esw-thes@w3.org>
On 18/2/09 15:44, Simon Jupp wrote:
> Dan,
> I don't know much about Ruby but i like the idea of having a scripting
> language to do some stuff with SKOS. This may be of some use to you if
> you, especially if you want to work with SKOS and Java. I have started a
> java API for SKOS [1] that is an extension of the OWL 2 API [2]. It is
> designed to provide a complete abstraction of the SKOS data model and
> supports all SKOS constructs that fall within OWL 2.
> Some advantages of this approach are:
> - You can work with SKOS objects at a high level abstraction without
> having to worry about any of the concrete syntaxes such as RDF/XML
> - Create, Edit and Read SKOS files (Nice and clean axiom based change
> control)
> - All the parsing and serialisation is handled by the OWL API
> - Because it's an extension of the OWL API, you have access to the
> underlying OWL objects (e.g. for handling extensions to SKOS)
> - All the reasoners supported by the OWL API (Pellet, Fact++ etc) mean
> you can work with a inferred SKOS model
> Anyway, sorry if I hijacked your thread! If it's of no us to you maybe
> someone else on this list who want to do Java programming with SKOS
> might be interested.

Hey, don't be sorry :) This is great stuff. And as it is in Java, looks 
like it can be wrapped from jruby in just the same way. I am happy if I 
can avoid implementing everything myself.  Particularly so as my real 
interest here is on figuring out quite where thesaurus-like modelling 
stops, and RDF/OWL class-based models start. So having SKOS data wired 
up to OWL reasoners is really great. If you have draft OWL2 support in 
the same environment, that's really interesting too, since I am pretty 
motivated to work on bring FOAF closer to OWL2, though it's hard without 
tools to test with.

BTW does this have any relationship to the SKOS addon for Protege 4?
[2 mins googling later]. Ah yes, that's you as well. You've been busy!
http://protegewiki.stanford.edu/index.php/SKOS_Editor  ... OK I'll 
hijack my own thread then, to mention a feature request: can we have an 
easy way in the SKOS plugin to add custom datatypes for use with 
skos:notation? I ran into this problem yesterday...

Back re SKOS APIs, I'll try calling your java stuff from jruby. I am not 
at all invested in my code, ... it's only 150 lines of ruby after all. 
OK that's probably 500 lines of Java, but still... :)

Have you looked at all at indexing/search facilities for SKOS? My next 
step was to try to wire this up with Lucene indexes, and experiment with 
"did you mean?" and autocompletion facilities that could be used in 
searching and tagging UI.



> Cheers,
> Simon
> 1- http://skosapi.sourceforge.net/
> 2- http://owlapi.sourceforge.net/
> Simon Jupp
> simon.jupp@manchester.ac.uk
> http://www.cs.man.ac.uk/~sjupp/
> On 18 Feb 2009, at 11:12, Dan Brickley wrote:
>> Just a quick note to report on a work-in-progress I've been exploring
>> this week.
>> I started to make a Ruby API for SKOS.
>> The distinguishing feature here is that it uses jruby (a Ruby
>> implementation in pure Java). As such it can call on the full powers
>> of the Jena toolkit, which go far beyond anything available currently
>> in Ruby. At the moment it doesn't do much, I just parse SKOS and make
>> a tiny object model which exposes little more than prefLabel and
>> broader/narrower.
>> I think it's worth exploring because Ruby is rather nice for
>> scripting, but lacks things like OWL reasoners and the general
>> maturity of Java RDF/OWL tools (parsers, databases, etc.).
>> I've posted some example snippet in See
>> http://svn.foaf-project.org/foaftown/2009/skosdex/readme.txt which
>> uses the UKAT SKOS dataset.
>> The idea is to use some ruby idioms to explore the SKOS graph.
>> Quick example. This goes 2 levels down from some chosen concept:
>> s1 = SKOS.new()
>> s1.read("file:samples/archives.rdf")
>> c1 = s1.concepts["http://www.ukat.org.uk/thesaurus/concept/1366"]
>> puts "test concept is "+ c1 + " " + c1.prefLabel
>> c1.narrower do |uri|
>> c2 = s1.concepts[uri]
>> puts "\tnarrower: "+ c2 + " " + c2.prefLabel
>> c2.narrower do |uri|
>> c3 = s1.concepts[uri]
>> puts "\t\tnarrower: "+ c3 + " " + c3.prefLabel
>> end
>> end
>> See http://svn.foaf-project.org/foaftown/2009/skosdex/readme.txt for
>> the indented output, which I won't show here as it'll get lost in
>> email formatting.
>> I'm interested to hear if anyone else has explored this topic.
>> Obviously there is a lot more to SKOS than broader/narrower, so I'm
>> very interested to find collaborators or at least a sanity check
>> before taking this beyond a rough demo.
>> Thanks for any thoughts,
>> Dan
>> --
>> http://danbri.org/
Received on Wednesday, 18 February 2009 15:23:33 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 2 March 2016 13:32:11 UTC