atlas-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ernie Ostic" <eos...@us.ibm.com>
Subject Re: Composition relationships
Date Thu, 18 May 2017 10:04:19 GMT

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/



From:	Mandy Chessell <mandy_chessell@uk.ibm.com>
To:	"Madhan Neethiraj" <madhan@apache.org>
Cc:	David Radley <david_radley@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_chessell@uk.ibm.com
LinkedIn: http://www.linkedin.com/pub/mandy-chessell/22/897/a49

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

Mime
  • Unnamed multipart/related (inline, None, 0 bytes)
View raw message