Hello Ernie,
I have added UML models of each of the JSON models to the Apache Atlas 
Wiki.  They are child pages of this one

https://cwiki.apache.org/confluence/display/ATLAS/Atlas+Model

>From this you can see that Base Model is the core.  Each of the other 
models is dependent on Base Model.  However, there are no other 
dependencies between models for different technologies.  There are 
differences in naming conventions (eg use of captials and underscores) in 
the labels used in the models so they look like each model is developed 
independently.

All the best
Mandy
___________________________________________
Mandy Chessell CBE FREng CEng FBCS
IBM Distinguished Engineer

Master Inventor
Member of the IBM Academy of Technology
Visiting Professor, Department of Computer Science, University of 
Sheffield

Email: mandy_chess...@uk.ibm.com
LinkedIn: http://www.linkedin.com/pub/mandy-chessell/22/897/a49

Assistant: Janet Brooks - jsbrook...@uk.ibm.com



From:   "Ernie Ostic" <eos...@us.ibm.com>
To:     dev@atlas.incubator.apache.org
Cc:     David Radley/UK/IBM@IBMGB, "Madhan Neethiraj" <mad...@apache.org>
Date:   18/05/2017 11:04
Subject:        Re: Composition relationships



Hi Madhan...

...a follow-up to Mandy's question, which may be more historical in nature 
(just to provide some additional insight as we all think about "common" 
models)........for each of the types that exist today, is there any 
particular pattern that they followed, or was it mostly that each 
mini-model evolved on its own, based on the original "author" of a 
particular "hook" and the needs of that selected hook and its base 
technology?

Thank you.

Ernie






Ernie Ostic

Worldwide Technical Sales
InfoSphere Information Server
IBM Analytics

Cell: (617) 331 8238
---------------------------------------------------------------
Open IGC is here! 

Extend the Catalog with custom objects and lineage definitions!
https://dsrealtime.wordpress.com/2015/07/29/open-igc-is-here/

Mandy Chessell ---05/18/2017 04:57:17 AM---Hello Madhan, I am working my 
way through the open metadata model and working out how to

From: Mandy Chessell <mandy_chess...@uk.ibm.com>
To: "Madhan Neethiraj" <mad...@apache.org>
Cc: David Radley <david_rad...@uk.ibm.com>, dev@atlas.incubator.apache.org
Date: 05/18/2017 04:57 AM
Subject: Composition relationships



Hello Madhan, 
I am working my way through the open metadata model and working out how to 
stitch it to the existing structures. I wanted to be sure I am 
understanding the JSON properly 

I am looking in addons/models/0030-hive_model.json at the relationships 
between hive_table and hive_column, hive_db. All of these are entities. 

Firstly, hive_table declares an attribute called db of type hive_db: There 
is no ownedRef entry nor a matching entry in the hive_db definition so I 
am assuming that db is just a complex atribute and there is no navigation 
from hive_db to hive_table? What is the difference between defining 
hive_db as an entity rather than a struct? 

{ 
"name": "hive_table", 
"superTypes": [ 
"DataSet" 
], 
"typeVersion": "1.0", 
"attributeDefs": [ 
{ 
"name": "db", 
"typeName": "hive_db", 
"cardinality": "SINGLE", 
"isIndexable": false, 
"isOptional": false, 
"isUnique": false 
}, 
: 
} 

Next, hive_table seems to have a 2 way composition relationships between 
itself and hive_column called columns<->table. These are definitions for 
the relationship in these entities: 

{ 
"name": "hive_table", 
"superTypes": [ 
"DataSet" 
], 
"typeVersion": "1.0", 
"attributeDefs": [ 
: 
{ 
"name": "columns", 
"typeName": "array<hive_column>", 
"cardinality": "SINGLE", 
"constraints": [ 
{ 
"type": "ownedRef" 
} 
], 
"isIndexable": false, 
"isOptional": true, 
"isUnique": false 
}, 
: 
: 
] 
}, 

{ 
"name": "hive_column", 
"superTypes": [ 
"DataSet" 
], 
"typeVersion": "1.0", 
"attributeDefs": [ 
: 
{ 
"name": "table", 
"typeName": "hive_table", 
"cardinality": "SINGLE", 
"constraints": [ 
{ 
"type": "inverseRef", 
"params": { 
"attribute": "columns" 
} 
} 
], 
"isIndexable": false, 
"isOptional": true, 
"isUnique": false 
} 
] 
}, 

However, a similar definition in hive_table for partitionKeys does not 
have an inverseRef entry in hive_column - does that make it one way? What 
does the "OwnedRef" declaration do in this case? 

{ 
"name": "hive_table", 
"superTypes": [ 
"DataSet" 
], 
"typeVersion": "1.0", 
"attributeDefs": [ 
: 
: 
{ 
"name": "partitionKeys", 
"typeName": "array<hive_column>", 
"cardinality": "SINGLE", 
"constraints": [ 
{ 
"type": "ownedRef" 
} 
], 
"isIndexable": false, 
"isOptional": true, 
"isUnique": false 
}, 
: 
: 
] 
}, 

Is there any difference in the behaviour of the relationship called db (to 
hive_db) and the one called partitionKeys? 

This is the UML I have derived 



Also, do you have example JSON structures for classifications? 

Many thanks for your help

All the best
Mandy
___________________________________________
Mandy Chessell CBE FREng CEng FBCS
IBM Distinguished Engineer

Master Inventor
Member of the IBM Academy of Technology
Visiting Professor, Department of Computer Science, University of 
Sheffield

Email: mandy_chess...@uk.ibm.com
LinkedIn: http://www.linkedin.com/pub/mandy-chessell/22/897/a49

Assistant: Janet Brooks - jsbrook...@uk.ibm.com


Reply via email to