Distinct(Project(BGP( ?type1 * . ?prop ?type2 . ?prop ?type1 . ?type2 * ), {?prop, ?type1, ?type2}))