Snippets
Some of the things I've seen this evening:
Posted at 2005-02-16 14:46:02 by Richard • Link to Snippets
, 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 Richard • Link to Little Wilbur addo…
, trackbacks.