We have three separate classes for the three logical operators tpAdd, bgpAdd, and gpAdd, and another three classes for the left-outer counterparts ( tpOptAdd, bgpOptAdd, and gpOptAdd). This leads to quite a bit of code duplication in code related to these classes (e.g., in several places we have three if-else branches for them, where such branch does essentially the same thing but after casting to the particular class).
This issue is about merging these classes into two, one for the three inner-join versions (tpAdd, bgpAdd, and gpAdd) and one for the left-join versions (tpOptAdd, bgpOptAdd, and gpOptAdd). There may be some helper methods within the merged classes to be able to quickly ask whether the current graph pattern is a triple pattern/BGP.
We have three separate classes for the three logical operators tpAdd, bgpAdd, and gpAdd, and another three classes for the left-outer counterparts ( tpOptAdd, bgpOptAdd, and gpOptAdd). This leads to quite a bit of code duplication in code related to these classes (e.g., in several places we have three if-else branches for them, where such branch does essentially the same thing but after casting to the particular class).
This issue is about merging these classes into two, one for the three inner-join versions (tpAdd, bgpAdd, and gpAdd) and one for the left-join versions (tpOptAdd, bgpOptAdd, and gpOptAdd). There may be some helper methods within the merged classes to be able to quickly ask whether the current graph pattern is a triple pattern/BGP.