Hi Stephen,
thanks for your valuable ideas and you clearly got problem with my usecase.
Model 1 you suggested will work for sure in which we are solving this usecase by adding property on edge to tell it is for Sales OR Revenue.
You may better know performance issues of this model from scale point of view as property based queries will come into picture here.
Model 2 will break with additional definitions for example :
1. Sales -> hasMap -> Map1 -> hasAnalytic -> Sum
Model 2 :
Sales -> hasMap -> Map1
Map1 -> hasAnalytic -> Sum
Sales -> hasAnalytic -> Sum
2. Revenue -> hasMap -> Map1 -> hasAnalytic -> Average
Model 2 :
Revenue -> hasMap -> Map1
Map1 -> hasAnalytic -> Average
Revenue -> hasAnalytic -> Average
3. Sales -> hasMap -> Map2 -> hasAnalytic -> Average
Model 2 :
Sales -> hasMap -> Map2
Map2 -> hasAnalytic -> Average
Sales -> hasAnalytic -> Average
With these 3 usecases stored in graph then if we need to get what is analytic on Sales, Map1 then it will break.
Map1 -> hasAnalytic = Sum, Average
Sales -> hasAnalytic = Sum, Average
Intersection is Sum, Average which is wrong answer for Sales, Map1. Expected answer is only Sum
Please give your suggestions further on this.
Thanks
Naresh