You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@atlas.apache.org by David Radley <da...@uk.ibm.com> on 2017/09/20 09:46:03 UTC

Tag propagation

Hi Madhan and Sarath,
We had a good discussion yesterday around tag propagation. To summarize:

1- Madhan was keen that we do not allow the removal of entityTypes from 
ClassificationDefs, if there are any instances of that classification 
applied to that entityType or any of its subtypes. I will amend the fix I 
submitted to account for this.
2- We will allow ClassificationDef updates of entityTypes to empty lists  
3- We talked of removing the relationshipDef tag propagation BOTH option - 
as this is complicated and difficult to implement. It is also not obvious 
what the use case is.
4- We talked of tag propagation not taking into account the Classification 
entityType restrictions 
5- We talked of tag propagation stage 1 at the relationshipDef level, 
stage 2 being a way to scope to entityTypes, stage 3 being able to 
override at a relationship instance level. The thought was that we store 
the state we need in entity to entity edge properties. 
6- David thought there were cases where we might want some tags to flow 
one way and different tags to flow the other way. for example the tag 
propagation we want for retention classifications is likely to be 
different from personal sensitive information classifications 

I have been thinking about 4, I think we need a compelling reason to not 
honor the model. If we have 
ClassificationDef A defined with entitytypes ["EntityA"] 
ClassificationDef B defined with entitytypes ["EntityB"] 

Then we should not be able to propagate tag A from EntityA to EntityB, as 
a get EntityB should never show classification A against it. Is there a 
use case for this? 

I think that if ClassificationDef A needs to be applied to "EntityB" then 
the user needs to change their models to add entityB to the entityTypes or 
the entityTypes restrictions be removed. If we do this we have a way of 
scoping the way tags propagate, so inappropriate (model violations) tags 
do not end up on entities. 

One way to implement this would be for the classificationDef and 
classification vertices in the graph (traits) to store the effective 
entityType names they can be applied to. We already resolve the effective 
types at addtype time in resolvereferences. This would be an easy check 
for Saraths's propagated tag impact/ed gremlin queries to take account of. 
 This seems to go some way to meet the stage 2 we were thinking about. The 
nice thing about this approach is hat we could replace the relationshipDef 
tag propagation enumeration with a rule that ran at addtype side (without 
needing to run the rule at query time). 

Let me know if I misrepresented or omitted anything.  I am really 
interested in your feedback and thoughts,
   all the best, David. 








 

Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU