 ###
 
 $rdf = {} unless $rdf?
+
+###
+  the superclass of all RDF Statement objects, that is
+  $rdf.Symbol, $rdf.Literal, $rdf.BlankNode
+  No class extends this yet, but it could be a place to put common behavior.
+###
+class $rdf.Node
 
 class $rdf.Empty
     termType: 'empty'
     toString: -> '()'
     toNT: @::toString
 
+###
+   an RDF URI
+    todo: badly named.
+    @param uri the uri as string
+###
 class $rdf.Symbol
     constructor: (@uri) ->
         @value = @uri   # why?

$rdf.Collection::sameTerm = $rdf.BlankNode::sameTerm
$rdf.Collection::compareTerm = $rdf.BlankNode::compareTerm

$rdf.term = (val) ->
    switch typeof val
        when 'object'

        new $rdf.Formula
    collection: ->
        new $rdf.Collection
    #todo: this is really badly named. It suggests that it creates a list, when in fact it creates a collection
    list: (values) ->
        r = new $rdf.Collection
        if values
