OK, we're talking apples and oranges here.

My approach is pretty simple-minded, aimed at versioning nodes,
your schema is much richer, over my head.

I just want a snapshot which saves node state to a dict / json object.
It's also intended to be somewhat generic, the Leo specific stuff
is in the ``other`` dict.

================================================
def node2dict(self, node=None, string_address=True):
    """Return a dictionary of some node attributes.

    Communicate outside the Leo world.
    """

    if node is None:
        node = self.c.currentPosition()

    address = self.get_address(node)
    if string_address is True:
        # convert ints to strings
        address = self.address2string(address)

    # some items are To Be Determined
    return {
        'timestamp': self.gnx2timestamp(node.gnx),
        'type': "TBD",
        'hash': "TBD", # probably a dict of hashes {'name':headhash,
'content':bodyhash, 'location':UNLhash ...}
        'uri': self.fname,
        'other': {
        'headline': node.h,
        'body': node.b,
        'address': address,
        'gnx': node.gnx,
        'key': node.key(),
        'level': node.level(),
        'uA': node.v.u,
            }
        }
================================================

An example of what I call address, this UNL:
UNL: /home/ktenney/work/leotools.leo#leotools.leo-->Sandbox-->using
@data nodes-->@settings-->@string VENV_HOME = /home/ktenney/venv

has address:
address: 0-5-0-0-1

BTW, this "address" syntax can be seen in p.key()
key: 150749356:0.151500012:5.151500300:0.151500492:0.151500844:1

On Wed, Dec 21, 2011 at 10:29 PM, Seth Johnson <[email protected]> wrote:
> On Wed, Dec 21, 2011 at 10:28 PM, Kent Tenney <[email protected]> wrote:
>> On Wed, Dec 21, 2011 at 6:36 PM, Seth Johnson <[email protected]> 
>> wrote:
>>>
>>> Reading more carefully, I should say that if I understand the
>>> distinction I think you're drawing, I think I'm doing both at the same
>>> time: every "node" has the full address for its context with it.
>>
>> I'm reading your description as having 2 components,
>> - a graph of pointers to nodes
>> - the nodes referenced by the pointers
>>
>> the graph defines addresses, the nodes are the data
>>
>> Is this correct?
>
>
> The pointers are the address.  But a set of pointers for standard
> components that make up an "address" (a set of addresses, one for each
> component) that together designate how each node and its relevant data
> are being used.  The "nodes" (conceived as points in an outline) are
> also pointers.  But you can at least see an outline at the level of
> "nodes."
>
> Let's set aside data for now -- they are stored granularly, per
> attribute, and they have a fuller "address" specification.
>
> For now, just looking at "nodes": You have a table, with columns for:
>
> State: that's three columns:
> Space
> Location
> Standpoint
>
> Context: that's three columns:
> Use Type
> Link Type
> Use
>
> The above are all "pointers" -- they are unique key values, which here
> also include URLs.
>
> And then, a column for what we can call a "node":
> Link
>
> That's also a "pointer" with a key value like the rest, but for now
> let's just pretend it's a useful text field like a Leo headline.
>
> You can call the Space and Context keys the "address" of the "node"
> which is in the Link column.
>
> There can be many Links, and each of those Links is another record in
> this table, with all the same columns.  What brings those Links
> together into one "outline" is their having common key values in the
> State and Context columns.
>
>
> After that, you have the tree structure fields:
> Parent Link
> Counter/Sibling Order
>
> By your terminology you could call the Parent Link field a "pointer"
> to "nodes."  Maybe the totality of "nodes" and "pointers" in that
> sense is your "graph."
>
> But the "node" -- the Link -- has a fully specified address in the
> State and Context columns.  It *also* has tree structure pointers in
> the Parent Link column.
>
>
> Seth
>
>
>
>
>
>
>>   But
>>> the outline structure is like a linked list, sort of.
>>>
>>>
>>> Seth
>>>
>>>
>>>> A linked list where every "node" has the context fully specified.  And
>>>> the fact there's only one "tree structure value" per record (the
>>>> parent key) keeps things simple, with everything in a simple, flat
>>>> denormalized data structure that's as fast to work with as
>>>> conceivable, as well as massively scalable -- perfectly amenable for
>>>> NoSQL backends, for instance.
>>>>
>>>> That flat structure lets you extend the basic concept of db relations
>>>> to what I call a context (so it has all the functions you need
>>>> regardless of specific context, rather than being simply joins of two
>>>> tables representing particular entities in the real world).
>>>>
>>>>
>>>> Seth
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "leo-editor" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to 
>>> [email protected].
>>> For more options, visit this group at 
>>> http://groups.google.com/group/leo-editor?hl=en.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "leo-editor" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to 
>> [email protected].
>> For more options, visit this group at 
>> http://groups.google.com/group/leo-editor?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "leo-editor" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/leo-editor?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en.

Reply via email to