Wed 16 Feb 2005

Snippets

Some of the things I've seen this evening:

Posted at 2005-02-16 14:46:02 by RichardLink to Snippets
Comments, trackbacks.

Little Wilbur addon

As today is a “hacking day” I'm actually producing some useful code. The following is a little pair of recursive functions to turn a Lisp list into an rdf:List; i.e., (!ex:elem1 !ex:elem2 !ex:elem3) into
ex:listElem rdf:first ex:elem1; rdf:rest
[ rdf:first ex:elem2; rdf:rest
[ rdf:first ex:elem3; rdf:rest rdf:nil ] ] .
This adds directly into a Wilbur store.

node-or-bnode

If n is nil, returns a new bnode. Otherwise, n.
(defun node-or-bnode (n)
(if n n (node nil)))

add-list-triples

Adds an rdf:List element to the database, returning the node. If list-node is provided, use that as the element; otherwise, a new bnode is created.
(defun add-list-triples (database 
first-elem rest-elem
&optional list-node)
(let ((sub (node-or-bnode list-node)))
(db-add-triple database
(triple sub !rdf:first first-elem))
(db-add-triple database
(triple sub !rdf:rest rest-elem))
sub))

list->rdf-list

Convert a Lisp list into RDF triples, adding to database. list-node is an optional node to use as the root of the list.
(defun list->rdf-list (database elems 
&optional list-node)
(if elems
(add-list-triples database
(car elems)
(list->rdf-list database (cdr elems))
list-node)
!rdf:nil))
I hope someone else finds these useful! Maybe it'll make rdf:List a bit easier to work with… alternatively, if someone rewrites these to not be rubbish, do let me know!

Posted at 2005-02-16 06:35:17 by RichardLink to Little Wilbur addo…
Comments, trackbacks.

Google
Web holygoat.co.uk
  • richard is: