Hi Bo - I think you may have put me back on track.

The answer to you question is both: I drew up a summary of the problem 
(that I should have posted first) so apologies for the fogginess of my 
original posts.

Here it is:

All of my nodes are designed for reuse. I use GUIDs as identifiers. See the 
Declarative diagram, below.

<https://lh3.googleusercontent.com/-XbMQCiJUv1c/VubwM6Cga5I/AAAAAAAAABM/lbWkOHnPMqEfhODV9riPgg2XvffHHZSxg/s1600/Declarative%2BNode.png>




When I create a statement (graph) I associate three nodes to create a 
relationship.  The reason I use nodes to establish the nature of the 
relationship is to avoid semantically sloppy edges. For example, I could 
use "Lives_In" or "Resides_In" or "Has_Home_In" to connect 'Fred 
Flintstone' and 'Bedrock' but I chose to model it this way:

<https://lh3.googleusercontent.com/-G1yk9Kr1tTg/VubxYN7gBbI/AAAAAAAAABU/FSnibf3PGboH3B82Yb0cyrq3MO-sxB3eA/s1600/Associative%2BNode%2BFred.png>


The statement: "Fred Flintstone Is A Resident of Bedrock" is true and 
navigable. I have assigned it a GUID to help describe what I want to do 
after I load more relationships. But  here is where I get into some 
trouble. When I make a statement about Fred's friend Gill I want to reuse 
the "Resident" node:

<https://lh3.googleusercontent.com/-Bm3Y_dbpRx0/VubyZMrtc0I/AAAAAAAAABc/7pi_QG0DNVQxq595v68VUvfsehOm89fGA/s1600/Associative%2BNode%2BGill.png>

Again, I assigned a GUID for the statement as a place-holder.  When I load 
all this into Neo4J (not including the statement GUIDs) I get this:


<https://lh3.googleusercontent.com/-f2K1R_UE8ec/Vuby4PXlCqI/AAAAAAAAABg/KzqCT3_H1qsVoOi0QxPmxLR_rCZEMum-A/s1600/Graph%2BLayout.png>


Without the statement GUIDs in there somewhere, the residency of both Fred 
and Gill is in doubt, yes?

I will read the material you sent (many, many thanks) and see if what you 
are proposing solves this dilemma for me. 

Best regards.

John O'

On Sunday, March 13, 2016 at 7:57:04 AM UTC-6, Bo Ferri wrote:
>
> Hi John,
>
> I'm not really sure what you are looking for. Are you looking for
>
> 1. identifiers for single statements a.k.a. triples, i.e., node-edge-node 
> parts
>
> or
>
> 2. identifiers for (sub) graphs,i.e., multiple statements (node-edge-node) 
> that belong together; this can be for example Concise Bounded Descriptions 
> (CBD, [1]), i.e., flat or hierarchical records, or Named Graphs [2]
>
> For our datamanagement platform d:swarm [3] we dealt with both issues, 
> i.e., we assign statement identifiers to every (content) relationship 
> (/statement) in our graph in form of a hash and furthermore we are able to 
> divide the graph into multiple named graphs (which are named 'data model' 
> in our domain model). See [4] for an example of how this can be look like. 
> There you can see a single record with a hierarchical structure. In [5] you 
> can see a flat record, whereby a relationship is selected. There you can 
> see the data model identifier (a prefixed URI), a resource identifier (a 
> hash; which is especially important for hierarchical records) and a 
> statement identifier (a hashed UUID). Furthermore, properties at 
> relationships enable us to add further qualified statements, e.g., order or 
> version range.
> All this is baked into a (experimental) Neo4j Unmanaged Extension [6,7].
>
> Maybe this is something you are looking for, or maybe it helps you to 
> express what you are looking for (at least ;) ).
>
> Cheers,
>
>
> Bo
>
>
> [1] https://www.w3.org/Submission/CBD/
> [2] https://en.wikipedia.org/wiki/Named_graph
> [3] https://github.com/dswarm/dswarm-documentation/wiki
> [4] 
> https://docs.google.com/presentation/d/1Aa_JM8YjSOF3A4LPm0ZuoFWzu5h-NN7VtygAE0WG97Q/pub?start=false&loop=false&delayms=60000#slide=id.g58f97b25d_0_280
> [5] 
> https://docs.google.com/presentation/d/1Aa_JM8YjSOF3A4LPm0ZuoFWzu5h-NN7VtygAE0WG97Q/pub?start=false&loop=false&delayms=60000#slide=id.g58f97b25d_0_292
> [6] https://github.com/dswarm/dswarm-graph-neo4j
> [7] https://github.com/dswarm/dswarm-documentation/wiki/Graph-Data-Model
>
>
> On Saturday, March 12, 2016 at 4:39:45 PM UTC+1, John O'Gorman wrote:
>>
>> Maybe I can try to clarify my ideas a bit.
>>
>> When a cluster of nodes is persistent (the same nodes relate to each 
>> other to, say, uniquely identify an individual person) I would like to be 
>> able to link the cluster without losing the identity of the component 
>> nodes.  Since all my individual nodes are potentially reusable I can still 
>> connect to them if a design requires it, but creating a relationship to a 
>> cluster should be similar to doing a join without knowing what other 
>> information is attached.
>>
>> Clear as mud?
>>
>>
>>
>> On Thursday, March 10, 2016 at 12:31:49 PM UTC-7, John O'Gorman wrote:
>>>
>>> I am working with a Neo4J model that uses a finite set of Labels based 
>>> on the six interrogatives (Who, What, When, Where, Why and How) and on a 
>>> similarly constrained set of relationships: Is_A, Is_Has, Is_Part_Has, 
>>> Is_Precedent_Has, Is_Equivalent_Has and Is_Property_Has.   Since the nature 
>>> of a Relationship in this model uses nodes instead of arbitrary edges (i.e. 
>>> "Lives_In" for  the example below, I end up with statements (in pseudo 
>>> Cypher) like the following:
>>>
>>> :Person {'Fred Flinstone'}  - [:Is_Has] -> :Status {'Resident'} <- 
>>> [:Is_Has} - :Place {'Bedrock'} 
>>>
>>> My question is:  I was wondering if I can assign a unique identifier (or 
>>> a URI) to the statement above in order to reference it (establish a new 
>>> relationship to it) later. 
>>>
>>> I am thinking it would be a better alternative than hyper-edges.
>>>
>>> Thoughts? Other than (WTH is he thinking?) :D
>>>
>>> Thanks.
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to