private static boolean equalBindings(Binding binding1, Binding binding2) { // Need to have the exact same terms coming back (therefore we can't use BNodeIso to compare values) return ResultSetCompare.equal(binding1, binding2, NodeUtils.sameTerm) ; }
static private boolean equivalent(Collection<Binding> rows1, Collection<Binding> rows2, EqualityTest match) { if ( rows1.size() != rows2.size() ) return false ; for ( Binding row1 : rows1 ) { // find in rows2. Binding matched = null ; for ( Binding row2 : rows2 ) { // NEED BACKTRACKING if ( equal(row1, row2, match) ) { matched = row2 ; break ; } } if ( matched == null ) return false ; // Remove matching. rows2.remove(matched) ; } return true ; }
static private boolean equivalentByOrder(List<Binding> rows1, List<Binding> rows2, EqualityTest match) { if ( rows1.size() != rows2.size() ) return false ; Iterator<Binding> iter1 = rows1.iterator() ; Iterator<Binding> iter2 = rows2.iterator() ; while ( iter1.hasNext() ) { // Does not need backtracking because rows must // align and so must variables in a row. Binding row1 = iter1.next() ; Binding row2 = iter2.next() ; if ( !equal(row1, row2, match) ) return false ; } return true ; }