Hey Josh,

> I think of your Pointer<T> as a reference to an entity. It does not contain
> the entity it refers to, but it contains the primary key of that entity.

Exactly! I was just thinking that last night. Tuples don’t need a separate ID 
system. No -- pointers reference the primary key of a tuple! Better yet 
perhaps, they can reference one-to-many. For instance:

{ id:1, label:person, name:marko, age:29, outE:*(outV=id) }

Thus, a pointer is defined by a pattern match. Haven’t thought through the 
consequences, but … :)

> Here, I have invented an Entity class to indicate that the pointer resolves
> to a vertex (an entity without a tuple, or rather with a 0-tuple -- the
> unit element).

Ah — the 0-tuple. Neat thought.

I look forward to your slides from the Knowledge Graph Conference. If I wasn’t 
such a reclusive hermit, I would have loved to have joined you there.

Take care,
Marko.

http://rredux.com <http://rredux.com/>


> On Mon, May 6, 2019 at 9:38 PM Marko Rodriguez <[email protected] 
> <mailto:[email protected]>> wrote:
> 
>> Hey Josh,
>> 
>>> I am feeling the tuples... as long as they can be typed, e.g.
>>> 
>>>    <V> myTuple.get(Integer) -- int-indexed tuples
>>>    <V> myTuple.get(String) -- string-indexed tuples
>>> In most programming languages, "tuples" are not lists, though they are
>> typed by a list of element types. E.g. in Haskell you might have a tuple
>> with the type
>>>    (Double, Double, Bool)
>> 
>> 
>> Yes, we have Pair<A,B>, Triple<A,B,C>, Quadruple<A,B,C,D>, etc. However
>> for base Tuple<A> of unknown length, the best I can do in Java is <A>. :|
>> You can see my stubs in the gist:
>>        https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8 <
>> https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8 
>> <https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8>> (LINES
>> #21-42)
>> 
>>> If this is in line with your proposal, then we agree that tuples should
>> be the atomic unit of data in TP4.
>> 
>> Yep. Vertices, Edges, Rows, Documents, etc. are all just tuples. However,
>> I suspect that we will disagree on some of my tweaks. Thus, I’d really like
>> to get your feedback on:
>> 
>>        1. pointers (tuple entries referencing tuples).
>>        2. sequences (multi-value tuple entries).
>>        3. # hidden map keys :|
>>                - sorta ghetto.
>> 
>> Also, I’m still not happy with db().has().has().as(‘x’).db().where()… its
>> an intense syntax and its hard to strategize.
>> 
>> I really want to nail down this “universal model” (tuple structure and
>> tuple-oriented instructions) as then I can get back on the codebase and
>> start to flush this stuff out with confidence.
>> 
>> See ya,
>> Marko.
>> 
>> http://rredux.com <http://rredux.com/> <http://rredux.com/ 
>> <http://rredux.com/>>
>> 
>> 
>>> 
>>> Josh
>>> 
>>> 
>>> On Mon, May 6, 2019 at 5:34 PM Marko Rodriguez <[email protected] 
>>> <mailto:[email protected]>
>> <mailto:[email protected] <mailto:[email protected]>>> wrote:
>>> Hi,
>>> 
>>> I spent this afternoon playing with n-tuples, pointers, data model
>> interfaces, and bytecode instructions.
>>> 
>>>        https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8 
>>> <https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8> <
>> https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8 
>> <https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8>> <
>> https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8 
>> <https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8> <
>> https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8 
>> <https://gist.github.com/okram/25d50724da89452853a3f4fa894bcbe8>>>
>>> 
>>> *** Kuppitz: They are tuples :). A Map<K,V> extends Tuple<Pair<K,V>>.
>> Tada!
>>> 
>>> What I like about this is that it combines the best of both worlds
>> (Josh+Marko).
>>>        * just flat tuples of arbitrary length.
>>>                * pattern matching for arbitrary joins. (k1=k2 AND k3=k4
>> …)
>>>                * pointers chasing for direct links. (edges, foreign
>> keys, document _id references, URI resolutions, …)
>>>        * sequences are a special type of tuple used for multi-valued
>> entries.
>>>        * has()/values()/etc. work on all tuple types! (maps, lists,
>> tuples, vertices, edges, rows, statements, documents, etc.)
>>> 
>>> Thoughts?,
>>> Marko.
>>> 
>>> http://rredux.com <http://rredux.com/> <http://rredux.com/ 
>>> <http://rredux.com/>> <http://rredux.com/ <http://rredux.com/> <
>> http://rredux.com/ <http://rredux.com/>>>

Reply via email to