- Subscribe to RSS Feed
- Mark Question as New
- Mark Question as Read
- Float this Question for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page
Clarification on Apache Atlas Relationships
- Labels:
-
Apache Atlas
Created ‎01-20-2021 08:39 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello.
I am currently in the process of building a TypeDef and would like to include a relationship between this TypeDef and another. I have been researching relationships in Atlas but have become confused in the process of relationship creation. My question is what order of steps are required to build out a working relationship using the v2 API?
Created ‎02-09-2021 05:19 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If you are still looking for this, the below references might be of help for some insights with AtlasRelationship v2 APIs:
As with other typeDefs the AtlasRelationshipDef has a name. Once created the RelationshipDef has a guid. The name and the guid are the 2 ways that the RelationshipDef is identified.
Additional Ref: https://atlas.apache.org/api/v2/json_AtlasRelationshipDef.html
https://atlas.apache.org/api/v2/resource_RelationshipREST.html
Created ‎12-24-2021 04:02 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hopefully the OP is sorted out by now, but for anyone else who comes across this: one of the best step-by-step instructions on Atlas relationships I've found is this comment by Vinayak Marriaya on the Atlas Jira; re-producing here, in case that link dies:
Following are the json's to create relationships
1. Creating EntityDef json
2. Creating Entity json
3. Creating RelationshipDef json
4. Creating Relationship instance jsonStep-1
Creating EntityDef
POST - http://localhost:21000/api/atlas/v2/types/typedefs
{ "entityDefs": [ { "category": "ENTITY", "name": "type_a" }, { "category": "ENTITY", "name": "type_b" } ] }
Step-2
Creating Entity
POST - http://localhost:21000/api/atlas/v2/entity/bulk
{ "entities": [ { "typeName": "type_a", "guid": "-72ddefefS2UY" }, { "typeName": "type_b", "guid": "-JL1HddDOfdf" } ] }
Step-3
Creating RelationshipDef
POST - http://localhost:21000/api/atlas/v2/types/typedefs
{ "relationshipDefs": [ { "propagateTags": "ONE_TO_TWO", "description": "description ASSOCIATION between type5 and type6", "relationshipCategory": "ASSOCIATION", "typeVersion": "1.0", "attributeDefs": [ { "name": "LinkInformation", "typeName": "string", "isOptional": true, "cardinality": "SINGLE", "valuesMinCount": 0, "valuesMaxCount": 1, "isUnique": false, "isIndexable": false, "includeInNotification": false, "searchWeight": -1 } ], "endDef2": { "name": "type_b_rel_attribute", "isLegacyAttribute": false, "isContainer": false, "cardinality": "SINGLE", "type": "type_b", "description": "description with name: type_2_rel_attribute" }, "endDef1": { "name": "type_a_rel_attribute", "isLegacyAttribute": false, "isContainer": false, "cardinality": "SET", "type": "type_a", "description": "description with name: type_1_rel_attribute" }, "guid": "-2fsdfjhsewl04", "name": "association_type_a_and_type_b" } ] }Step-4
Creating Relationship instance
POST- http://localhost:21000/api/atlas/v2/relationship
{ "typeName": "association_type_a_and_type_b", "end1": { "typeName": "type_a", "guid": "b4dae5e8-a606-4e41-9ce3-8f35245f389e" (guid of type_a entity) }, "propagateTags": "NONE", "provenanceType": 0, "propagatedClassifications": [], "end2": { "typeName": "type_b", "guid": "23c2f3c1-dd74-4190-a6d1-b012c44cbb6d" (guid of type_b entity) }, "blockedPropagatedClassifications": [], "guid": "-bjbfdfddfeffef", "attributes": { "LinkInformation": "TestingInformation" } }
Following is the output of the above API call.
Output of type_a entity
GET - http://localhost:21000/api/atlas/v2/entity/guid/\{guid of type_a entity}
{ "referredEntities": {}, "entity": { "typeName": "type_a", "guid": "b4dae5e8-a606-4e41-9ce3-8f35245f389e", "isIncomplete": false, "status": "ACTIVE", "createdBy": "admin", "updatedBy": "admin", "createTime": 1632121151626, "updateTime": 1632121151626, "version": 0, "relationshipAttributes": { "type_a_rel_attribute": [ { "guid": "23c2f3c1-dd74-4190-a6d1-b012c44cbb6d", "typeName": "type_b", "entityStatus": "ACTIVE", "relationshipType": "association_type_a_and_type_b", "relationshipGuid": "ec64783a-58d7-4265-87d6-c1535ce2d9b7", "relationshipStatus": "ACTIVE", "relationshipAttributes": { "typeName": "association_type_a_and_type_b", "attributes": { "LinkInformation": "TestingInformation" } } } ] }, "labels": [] } }Output of type_b entity
GET - http://localhost:21000/api/atlas/v2/entity/guid/\{guid of type_b entity}
{ "referredEntities": {}, "entity": { "typeName": "type_b", "guid": "23c2f3c1-dd74-4190-a6d1-b012c44cbb6d", "isIncomplete": false, "status": "ACTIVE", "createdBy": "admin", "updatedBy": "admin", "createTime": 1632121151626, "updateTime": 1632121151626, "version": 0, "relationshipAttributes": { "type_b_rel_attribute": { "guid": "b4dae5e8-a606-4e41-9ce3-8f35245f389e", "typeName": "type_a", "entityStatus": "ACTIVE", "relationshipType": "association_type_a_and_type_b", "relationshipGuid": "ec64783a-58d7-4265-87d6-c1535ce2d9b7", "relationshipStatus": "ACTIVE", "relationshipAttributes": { "typeName": "association_type_a_and_type_b", "attributes": { "LinkInformation": "TestingInformation" } } } }, "labels": [] } }As you can see, LinkInformation is specified under "attributes" and when you search for the entity using GUID as you mentioned in jira, you will be able to see the value of "LinkInformation".
