Repository: atlas
Updated Branches:
  refs/heads/master d1e79fa06 -> f89fa4415


ATLAS-2309: Add Area 1 types

Signed-off-by: Madhan Neethiraj <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/f89fa441
Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/f89fa441
Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/f89fa441

Branch: refs/heads/master
Commit: f89fa44156d64e86920d66ba776852fc55297e12
Parents: d1e79fa
Author: David Radley <[email protected]>
Authored: Fri Dec 15 13:31:43 2017 +0000
Committer: Madhan Neethiraj <[email protected]>
Committed: Sun Dec 17 16:50:16 2017 -0800

----------------------------------------------------------------------
 .../0100-Area1-Collaboration/0110-Actors.json   | 252 +++++++++++++++
 .../0120-Collections.json                       | 171 +++++++++++
 .../0100-Area1-Collaboration/0130-Projects.json | 208 +++++++++++++
 .../0140-Communities.json                       | 112 +++++++
 .../0100-Area1-Collaboration/0150-Feedback.json | 304 +++++++++++++++++++
 .../0100-Area1-Collaboration/0160-Notes.json    | 101 ++++++
 .../graph/v1/AtlasRelationshipDefStoreV1.java   |   7 +-
 7 files changed, 1154 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/f89fa441/addons/models/0100-Area1-Collaboration/0110-Actors.json
----------------------------------------------------------------------
diff --git a/addons/models/0100-Area1-Collaboration/0110-Actors.json 
b/addons/models/0100-Area1-Collaboration/0110-Actors.json
new file mode 100644
index 0000000..3a307b5
--- /dev/null
+++ b/addons/models/0100-Area1-Collaboration/0110-Actors.json
@@ -0,0 +1,252 @@
+{
+  "enumDefs": [
+    {
+      "name": "CrowdSourcingRole",
+      "description": "An Actor Profile makes a contribution in a crowdsourcing 
role.",
+      "typeVersion": "1.0",
+      "elementDefs": [
+        {
+          "ordinal": 0,
+          "value": "PROPOSER",
+          "description": "A proposed contribution."
+        },
+        {
+          "ordinal": 1,
+          "value": "REVIEWER",
+          "description": "A reviewer contribution."
+        },
+        {
+          "ordinal": 2,
+          "value": "SUPPORTER",
+          "description": "A supporter contribution."
+        },
+        {
+          "ordinal": 3,
+          "value": "APPROVER",
+          "description": "An approver contribution."
+        },
+        {
+          "ordinal": 99,
+          "value": "OTHER",
+          "description": "Another contribution."
+        }
+      ]
+    },
+    {
+      "name": "ContactMethodType",
+      "description": "Types of contact method.",
+      "typeVersion": "1.0",
+      "elementDefs": [
+        {
+          "ordinal": 0,
+          "value": "EMAIL"
+        },
+        {
+          "ordinal": 1,
+          "value": "PHONE"
+        },
+        {
+          "ordinal": 99,
+          "value": "OTHER"
+        }
+      ]
+    }
+  ],
+  "structDefs": [],
+  "classificationDefs": [],
+  "entityDefs": [
+    {
+      "name": "ContactDetail",
+      "description": "The contact details describe the contact method and its 
associated value.",
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "contactMethodType",
+          "typeName": "ContactMethodType",
+          "description": "Contact method type",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "contactMethodValue",
+          "typeName": "string",
+          "description": "The value associated with the contact method. For 
example emails have the email address.",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "ActorProfile",
+      "superTypes": [
+        "Referenceable"
+      ],
+      "description": "Actors are associated with the new metadata that they 
create and comment on via their user identities. This separation is maintained 
because the user identity is the only information available on calls to the 
metadata repository. The ActorProfile is used to aggregate the activity of the 
individual or team. More information about the person behind the user identity 
is available through the ActorProfile. It describes the actual person, or 
possibly team if group users are being used, that is working either with the 
data assets or with the metadata directly. The profile is a record to add 
additional information about the person or engine that is making the requests. 
They may have more than one UserIdentity.  The userId is recorded with specific 
entities and relationships when they are created or updated. The userId for a 
Software Server is also captured in the metadata model, so it is possible to 
correlate the actions of a data processing Software Server with chang
 es to the metadata.",
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "name",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "description",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true
+        }
+      ]
+    },
+    {
+      "name": "Team",
+      "description": "An team participating in the collaboration around open 
metadata.",
+      "superTypes": [
+        "ActorProfile"
+      ],
+      "description": "A team",
+      "typeVersion": "1.0"
+    },
+    {
+      "name": "Person",
+      "description": "An individual participating in the collaboration around 
open metadata.",
+      "superTypes": [
+        "ActorProfile"
+      ],
+      "description": "",
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "karmaPoints",
+          "description": "Open metadata supports KarmaPoints. These are 
awarded for participation in the collaboration around open metadata.",
+          "typeName": "int",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "UserIdentity",
+      "superTypes": [],
+      "description": "UserIdentity provides a structure for storing the 
security authentication information about a person. We have a simple string for 
the userId - but this could be extended to include more sophisticated 
identification information. The user identity is the only information available 
on calls to the metadata repository. Most metadata repositories are run in a 
secure mode requiring incoming requests to be authenticated. There is a 
userIdentifier for each unique logged on security identity; in this model it is 
called the userId.",
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "userId",
+          "description": "The unique logged on security identity.",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    }
+  ],
+  "relationshipDefs": [
+    {
+      "name": "Leadership",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "leads",
+        "type": "ActorProfile",
+        "cardinality": "SET"
+      },
+      "endDef2": {
+        "name": "follows",
+        "type": "ActorProfile",
+        "cardinality": "SET"
+      },
+      "relationshipCategory": "ASSOCIATION",
+      "propagateTags": "NONE",
+      "attributeDefs": []
+    },
+    {
+      "name": "Peer",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "peer",
+        "type": "ActorProfile",
+        "cardinality": "SET"
+      },
+      "endDef2": {
+        "name": "peer",
+        "type": "ActorProfile",
+        "cardinality": "SET"
+      },
+      "relationshipCategory": "ASSOCIATION",
+      "propagateTags": "NONE",
+      "attributeDefs": []
+    },
+    {
+      "name": "ProfileIdentities",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "profile",
+        "type": "UserIdentity",
+        "cardinality": "SET"
+      },
+      "endDef2": {
+        "name": "userIdentities",
+        "type": "ActorProfile",
+        "cardinality": "SET"
+      },
+      "relationshipCategory": "ASSOCIATION",
+      "propagateTags": "NONE",
+      "attributeDefs": []
+    },
+    {
+      "name": "Contributor",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "contributor",
+        "type": "Referenceable",
+        "cardinality": "SET"
+      },
+      "endDef2": {
+        "name": "contribution",
+        "type": "ActorProfile",
+        "cardinality": "SET"
+      },
+      "relationshipCategory": "ASSOCIATION",
+      "propagateTags": "NONE",
+      "attributeDefs": [
+        {
+          "name": "roleType",
+          "typeName": "CrowdSourcingRole",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "ActorContactDetail",
+      "description": "The contact details are all the ways that can be used to 
contact the actor. Mostly contact details are owned by only one Actor. It is 
also possible to define shared contact details.",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "contacts",
+        "type": "ActorProfile",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "actorProfile",
+        "type": "ContactDetail",
+        "cardinality": "SET"
+      },
+      "relationshipCategory": "AGGREGATION",
+      "propagateTags": "NONE"
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/f89fa441/addons/models/0100-Area1-Collaboration/0120-Collections.json
----------------------------------------------------------------------
diff --git a/addons/models/0100-Area1-Collaboration/0120-Collections.json 
b/addons/models/0100-Area1-Collaboration/0120-Collections.json
new file mode 100644
index 0000000..4dbd2ad
--- /dev/null
+++ b/addons/models/0100-Area1-Collaboration/0120-Collections.json
@@ -0,0 +1,171 @@
+{
+  "enumDefs": [
+    {
+      "name": "OrderBy",
+      "description": "The criteria by which this collection is ordered.",
+      "typeVersion": "1.0",
+      "elementDefs": [
+        {
+          "ordinal": 0,
+          "value": "NAME",
+          "description": "Order by name alphabetically."
+        },
+        {
+          "ordinal": 1,
+          "value": "OWNER",
+          "description": "Order by owner alphabetically."
+        },
+        {
+          "ordinal": 2,
+          "value": "DATE_ADDED",
+          "description": "Order by date added."
+        },
+        {
+          "ordinal": 3,
+          "value": "DATE_UPDATED",
+          "description": "Order by date updated."
+        },
+        {
+          "ordinal": 99,
+          "value": "OTHER",
+          "description": "Other order."
+        }
+      ]
+    }
+  ],
+  "structDefs": [],
+  "classificationDefs": [
+    {
+      "name": "Set",
+      "superTypes": [],
+      "description": "Classifying a Collection with Set indicates it is an 
unordered collection.",
+      "typeVersion": "1.0",
+      "entityTypes": [
+        "Collection"
+      ]
+    },
+    {
+      "name": "Folder",
+      "superTypes": [],
+      "description": "Classifying a Collection with Folder indicates it is an 
ordered collection.",
+      "typeVersion": "1.0",
+      "entityTypes": [
+        "Collection"
+      ],
+      "attributeDefs": [
+        {
+          "name": "orderBy",
+          "description": "The criteria by which this folder is ordered.",
+          "typeName": "OrderBy",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "otherPropertyName",
+          "description": "The property name whose values the folder is ordered 
on.",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    }
+  ],
+  "entityDefs": [
+    {
+      "name": "Collection",
+      "description": "Collections provide a general mechanism for grouping 
resources together. They are typically associated with Actors, Projects or 
Communities.",
+      "superTypes": [
+        "Referenceable"
+      ],
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "name",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "description",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "owner",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ],
+      "relationshipDefs": [
+        {
+          "name": "ActorCollections",
+          "typeVersion": "1.0",
+          "endDef1": {
+            "name": "consumingActor",
+            "type": "Collection",
+            "cardinality": "SET",
+            "isContainer": true
+          },
+          "endDef2": {
+            "name": "actorCollections",
+            "type": "ActorProfile",
+            "cardinality": "SET"
+          },
+          "relationshipCategory": "AGGREGATION",
+          "propagateTags": "NONE",
+          "attributeDefs": [
+            {
+              "name": "collectionUse",
+              "description": "This is how the collection is used by the 
consuming actor.",
+              "typeName": "string",
+              "cardinality": "SINGLE",
+              "isIndexable": true,
+              "isOptional": true,
+              "isUnique": false
+            }
+          ]
+        },
+        {
+          "name": "CollectionMembership",
+          "typeVersion": "1.0",
+          "endDef1": {
+            "name": "member",
+            "type": "Collection",
+            "cardinality": "SET",
+            "isContainer": true
+          },
+          "endDef2": {
+            "name": "organisatedBy",
+            "type": "Referenceable",
+            "cardinality": "SET"
+          },
+          "relationshipCategory": "AGGREGATION",
+          "propagateTags": "NONE",
+          "attributeDefs": [
+            {
+              "name": "dateAdded",
+              "description": "This is the date that the collection was added 
as a member.",
+              "typeName": "date",
+              "cardinality": "SINGLE",
+              "isIndexable": true,
+              "isOptional": true,
+              "isUnique": false
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/f89fa441/addons/models/0100-Area1-Collaboration/0130-Projects.json
----------------------------------------------------------------------
diff --git a/addons/models/0100-Area1-Collaboration/0130-Projects.json 
b/addons/models/0100-Area1-Collaboration/0130-Projects.json
new file mode 100644
index 0000000..da4a624
--- /dev/null
+++ b/addons/models/0100-Area1-Collaboration/0130-Projects.json
@@ -0,0 +1,208 @@
+{
+  "enumDefs": [],
+  "structDefs": [],
+  "classificationDefs": [
+    {
+      "name": "Campaign",
+      "superTypes": [],
+      "description": "Related projects can be organized into campaigns. The 
Campaign classification indicates that the project is working as a campaign. 
Projects that depend on the Campaign project as part of that project.",
+      "typeVersion": "1.0",
+      "entityTypes": [
+        "Project"
+      ]
+    },
+    {
+      "name": "Task",
+      "superTypes": [],
+      "description": "Small items of work, typically performed by a single 
person, can be defined as tasks for a project.",
+      "typeVersion": "1.0",
+      "entityTypes": [
+        "Project"
+      ]
+    }
+  ],
+  "entityDefs": [
+    {
+      "name": "Project",
+      "description": "Projects are used to organize a specific activity. The 
project is used to control the use of resources and associated costs so they 
are used appropriately in order to successfully achieve the project's goals. 
Notice that the project acts as an anchor for collections of resources that the 
project is using. Since it is a Referenceable, it can have links to external 
URLs, such as the project home page, project plan or APIs as well as images.",
+      "superTypes": [
+        "Referenceable"
+      ],
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "name",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "description",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "startDate",
+          "description":"Project start date",
+          "typeName": "date",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "plannedEndDate",
+          "description":"Planned project end date.",
+          "typeName": "date",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "status",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    }
+  ],
+  "relationshipDefs": [
+    {
+      "name": "ProjectHierarchy",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "managedProjects",
+        "type": "Project",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "managingProject",
+        "type": "Project",
+        "cardinality": "SINGLE"
+      },
+      "relationshipCategory": "COMPOSITION",
+      "propagateTags": "NONE"
+    },
+    {
+      "name": "ProjectDependency",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "dependentProjects",
+        "type": "Project",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "dependsOnProject",
+        "type": "Project",
+        "cardinality": "SINGLE"
+      },
+      "relationshipCategory": "COMPOSITION",
+      "propagateTags": "NONE",
+      "attributeDefs": [
+        {
+          "name": "dependencySummary",
+          "description": "Summary description of the dependency.",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "ProjectTeam",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "supportingTeams",
+        "type": "Project",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "projectFocus",
+        "type": "Team",
+        "cardinality": "SINGLE"
+      },
+      "relationshipCategory": "COMPOSITION",
+      "propagateTags": "NONE",
+      "attributeDefs": [
+        {
+          "name": "teamRole",
+          "description": "Role in the team.",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "ProjectResources",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "supportingResources",
+        "type": "Project",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "projectUse",
+        "type": "Collection",
+        "cardinality": "SINGLE"
+      },
+      "relationshipCategory": "COMPOSITION",
+      "propagateTags": "NONE",
+      "attributeDefs": [
+        {
+          "name": "resourceUse",
+          "description": "Role in the team.",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "ProjectScope",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "projectScope",
+        "type": "Project",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "projectImpactingAssets",
+        "type": "Collection",
+        "cardinality": "SINGLE"
+      },
+      "relationshipCategory": "COMPOSITION",
+      "propagateTags": "NONE",
+      "attributeDefs": [
+        {
+          "name": "scopeDescription",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/f89fa441/addons/models/0100-Area1-Collaboration/0140-Communities.json
----------------------------------------------------------------------
diff --git a/addons/models/0100-Area1-Collaboration/0140-Communities.json 
b/addons/models/0100-Area1-Collaboration/0140-Communities.json
new file mode 100644
index 0000000..20c835b
--- /dev/null
+++ b/addons/models/0100-Area1-Collaboration/0140-Communities.json
@@ -0,0 +1,112 @@
+{
+  "enumDefs": [
+    {
+      "name": "CommunityMembershipType",
+      "description": "The type of community membership.",
+      "typeVersion": "1.0",
+      "elementDefs": [
+        {
+          "ordinal": 0,
+          "value": "MEMBER",
+          "description": "Member of the community."
+        },
+        {
+          "ordinal": 1,
+          "value": "ADMINISTRATOR",
+          "description": "Administrator of the community."
+        },
+        {
+          "ordinal": 2,
+          "value": "LEADER",
+          "description": "Leader of the community."
+        }
+
+      ]
+    }
+  ],
+  "structDefs": [],
+  "classificationDefs": [],
+  "entityDefs": [
+    {
+      "name": "Community",
+      "description": "Communities are groups of people related by a common 
interest or skill. People tend to stay in communities for the long term. 
Conversely people are are associated with projects just for the lifetime of the 
project and then they move on to another.",
+      "superTypes": [
+        "Referenceable"
+      ],
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "name",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "description",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "mission",
+          "description": "The goal, task and/or duty of this community.",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    }
+  ],
+  "relationshipDefs": [
+    {
+      "name": "CommunityMembership",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "Community",
+        "type": "Person",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "members",
+        "type": "Community",
+        "cardinality": "SET"
+      },
+      "relationshipCategory": "AGGREGATION",
+      "propagateTags": "NONE",
+      "attributeDefs": [
+        {
+          "name": "relationshipType",
+          "typeName": "CommunityMembershipType",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "CommunityResources",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "supportingResources",
+        "type": "Community",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "projectFocus",
+        "type": "Collection",
+        "cardinality": "SET"
+      },
+      "relationshipCategory": "AGGREGATION",
+      "propagateTags": "NONE"
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/f89fa441/addons/models/0100-Area1-Collaboration/0150-Feedback.json
----------------------------------------------------------------------
diff --git a/addons/models/0100-Area1-Collaboration/0150-Feedback.json 
b/addons/models/0100-Area1-Collaboration/0150-Feedback.json
new file mode 100644
index 0000000..a3a80c1
--- /dev/null
+++ b/addons/models/0100-Area1-Collaboration/0150-Feedback.json
@@ -0,0 +1,304 @@
+{
+  "enumDefs": [
+    {
+      "name": "CommentType",
+      "description":"Types of comments.",
+      "typeVersion": "1.0",
+      "elementDefs": [
+        {
+          "ordinal": 0,
+          "value": "GENERAL_COMMENT"
+        },
+        {
+          "ordinal": 1,
+          "value": "QUESTION"
+        },
+        {
+          "ordinal": 2,
+          "value": "ANSWER"
+        },
+        {
+          "ordinal": 3,
+          "value": "SUGGESTION"
+        },
+        {
+          "ordinal": 4,
+          "value": "EXPERIENCE"
+        }
+      ]
+    },
+    {
+      "name": "StarRating",
+      "description":"Start rating values.",
+      "typeVersion": "1.0",
+      "elementDefs": [
+        {
+          "ordinal": 0,
+          "value": "NOT_RECOMMENDED"
+        },
+        {
+          "ordinal": 1,
+          "value": "ONE_STAR"
+        },
+        {
+          "ordinal": 2,
+          "value": "TWO_STAR"
+        },
+        {
+          "ordinal": 3,
+          "value": "THREE_STAR"
+        },
+        {
+          "ordinal": 4,
+          "value": "FOUR_STAR"
+        },
+        {
+          "ordinal": 5,
+          "value": "FIVE_STAR"
+        }
+      ]
+    }
+  ],
+  "structDefs": [],
+  "classificationDefs": [],
+  "entityDefs": [
+    {
+      "name": "Comment",
+      "description": "An important principle of good metadata it to be 
continually capturing the experience of subject matter experts. Comments are a 
key mechanism for providing text feedback on the metadata definitions by any 
user. ",
+      "superTypes": [
+        "Referenceable"
+      ],
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "comment",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "user",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "commentType",
+          "typeName": "CommentType",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "Rating",
+      "description": "An important principle of good metadata it to be 
continually capturing the experience of subject matter experts. Ratings are a 
key mechanism for providing simple feedback on the metadata definitions by any 
user.",
+      "superTypes": [
+        "Referenceable"
+      ],
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "stars",
+          "typeName": "StarRating",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "user",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "review",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "Like",
+      "description": "Expression of Like by a user.",
+      "superTypes": [
+        "Referenceable"
+      ],
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "user",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "InformalTag",
+      "description": "A user attaches an informal tag to an entity to make the 
entity more meaningful for the user, by associating it with a meaningful/useful 
tag Name."  ,
+      "superTypes": [
+        "Referenceable"
+      ],
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "user",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "tagName",
+          "description":"A name that is meaningful to the user.",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "tagDescription",
+          "description":"The description of the informal tag gives more 
information about how it is useful.",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "PrivateTag",
+      "description": "A Private tag is an informal tag that can only be seen 
by it's author.",
+      "superTypes": [
+        "InformalTag"
+      ],
+      "typeVersion": "1.0"
+    }
+  ],
+  "relationshipDefs": [
+    {
+      "name": "AttachedLike",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "likes",
+        "type": "Referenceable",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "likedObject",
+        "type": "Like",
+        "cardinality": "SINGLE"
+      },
+      "propagateTags": "NONE",
+      "relationshipCategory": "COMPOSITION"
+    },
+    {
+      "name": "AttachedTag",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "tags",
+        "type": "Referenceable",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "taggedObject",
+        "type": "InformalTag",
+        "cardinality": "SINGLE"
+      },
+      "relationshipCategory": "COMPOSITION",
+      "propagateTags": "NONE"
+    },
+    {
+      "name": "AttachedRating",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "starRatings",
+        "type": "Referenceable",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "RatedObject",
+        "type": "Rating",
+        "cardinality": "SINGLE"
+      },
+      "relationshipCategory": "COMPOSITION",
+      "propagateTags": "NONE"
+    },
+    {
+      "name": "AttachedFeedback",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "supportingResources",
+        "type": "Project",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "projectUse",
+        "type": "Collection",
+        "cardinality": "SINGLE"
+      },
+      "relationshipCategory": "COMPOSITION",
+      "propagateTags": "NONE",
+      "attributeDefs": [
+        {
+          "name": "resourceUse",
+          "description": "Role in the team.",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "ProjectScope",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "projectScope",
+        "type": "Project",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "projectImpactingAssets",
+        "type": "Collection",
+        "cardinality": "SINGLE"
+      },
+      "relationshipCategory": "COMPOSITION",
+      "propagateTags": "NONE",
+      "attributeDefs": [
+        {
+          "name": "scopeDescription",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/f89fa441/addons/models/0100-Area1-Collaboration/0160-Notes.json
----------------------------------------------------------------------
diff --git a/addons/models/0100-Area1-Collaboration/0160-Notes.json 
b/addons/models/0100-Area1-Collaboration/0160-Notes.json
new file mode 100644
index 0000000..8b6cd4a
--- /dev/null
+++ b/addons/models/0100-Area1-Collaboration/0160-Notes.json
@@ -0,0 +1,101 @@
+{
+  "enumDefs": [],
+  "structDefs": [],
+  "classificationDefs": [],
+  "entityDefs": [
+    {
+      "name": "NoteLog",
+      "description": "Engines that are performing processing on the resources 
may also write notes to the note log. The note log can be attached to any 
referenceable metadata object.",
+      "superTypes": [
+        "Referenceable"
+      ],
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "name",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "description",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    },
+    {
+      "name": "NoteEntry",
+      "description": "Notes provide additional information about a 
referenceable object. They are used by resource owners and stewards to document 
the current status of their resources. A referenceable object can have many 
notes linked off of it.  Notes are used by the people with edit access to the 
referenceable object to provide information about its content, proposed changes 
and other useful information. Notes are also used by engines that are working 
on the related assets to add an informal audit trail of activity around the 
object.",
+      "superTypes": [
+        "Referenceable"
+      ],
+      "typeVersion": "1.0",
+      "attributeDefs": [
+        {
+          "name": "text",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "user",
+          "typeName": "string",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        },
+        {
+          "name": "lastUpdate",
+          "typeName": "date",
+          "cardinality": "SINGLE",
+          "isIndexable": true,
+          "isOptional": true,
+          "isUnique": false
+        }
+      ]
+    }
+  ],
+  "relationshipDefs": [
+    {
+      "name": "AttachedNoteLogEntry",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "describes",
+        "type": "NoteLog",
+        "cardinality": "SET"
+      },
+      "endDef2": {
+        "name": "notes",
+        "type": "Referenceable",
+        "cardinality": "SET"
+      },
+      "propagateTags": "NONE"
+    },
+    {
+      "name": "AttachedNoteLog",
+      "typeVersion": "1.0",
+      "endDef1": {
+        "name": "entries",
+        "type": "NoteLog",
+        "cardinality": "SET",
+        "isContainer": true
+      },
+      "endDef2": {
+        "name": "logs",
+        "type": "NoteEntry",
+        "cardinality": "SINGLE"
+      },
+      "propagateTags": "NONE",
+      "relationshipCategory": "AGGREGATION"
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/f89fa441/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipDefStoreV1.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipDefStoreV1.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipDefStoreV1.java
index 4c69d6e..d325300 100644
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipDefStoreV1.java
+++ 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipDefStoreV1.java
@@ -429,8 +429,13 @@ public class AtlasRelationshipDefStoreV1 extends 
AtlasAbstractDefStoreV1<AtlasRe
     public static void 
setVertexPropertiesFromRelationshipDef(AtlasRelationshipDef relationshipDef, 
AtlasVertex vertex) {
         vertex.setProperty(Constants.RELATIONSHIPTYPE_END1_KEY, 
AtlasType.toJson(relationshipDef.getEndDef1()));
         vertex.setProperty(Constants.RELATIONSHIPTYPE_END2_KEY, 
AtlasType.toJson(relationshipDef.getEndDef2()));
+        // default the relationship category to association if it has not been 
specified.
+        String relationshipCategory = RelationshipCategory.ASSOCIATION.name();
+        if (relationshipDef.getRelationshipCategory()!=null) {
+            relationshipCategory 
=relationshipDef.getRelationshipCategory().name();
+        }
         // Update RelationshipCategory
-        vertex.setProperty(Constants.RELATIONSHIPTYPE_CATEGORY_KEY, 
relationshipDef.getRelationshipCategory().name());
+        vertex.setProperty(Constants.RELATIONSHIPTYPE_CATEGORY_KEY, 
relationshipCategory);
 
         if (relationshipDef.getPropagateTags() == null) {
             vertex.setProperty(Constants.RELATIONSHIPTYPE_TAG_PROPAGATION_KEY, 
AtlasRelationshipDef.PropagateTags.NONE.name());

Reply via email to