Given a node ID, return an object the information available about
        this node. This accepts a loader function as it's first argument, which
        is expected to return all tuples of (predicate, object, source) for
        the given subject.

def objectify(self, load, node, depth=2, path=None):
        """ Given a node ID, return an object the information available about
        this node. This accepts a loader function as it's first argument, which
        is expected to return all tuples of (predicate, object, source) for
        the given subject. """
        if path is None:
            path = set()

        if self.is_object:
            if depth < 1:
                return
            return self._objectify_object(load, node, depth, path)
        elif self.is_array:
            if depth < 1:
                return
            return [self.items.objectify(load, node, depth, path)]
        else:
            return node