code: public static String generateExactMatchPattern(URI origin,
                                                     URI destination, String bindingVar, boolean includeUrisBound) {
  
          List<String> patterns = new ArrayList<String>();
  
          // Exact match pattern
          StringBuffer query = new StringBuffer();
          query.append(Util.generateSubclassPattern(origin, destination) + NL);
          query.append(Util.generateSuperclassPattern(origin, destination) + NL);
  
          patterns.add(query.toString());
  
          // Find same term cases
          query = new StringBuffer();
          query.append("FILTER (str(").
                  append(sparqlWrapUri(origin)).
                  append(") = str(").
                  append(sparqlWrapUri(destination)).
                  append(") ) . " + NL);
  
          patterns.add(query.toString());
  
          StringBuffer result = new StringBuffer(generateUnionStatement(patterns));
  
          // Bind a variable for inspection
          result.append("BIND (true as ?" + bindingVar + ") ." + NL);
          // Include origin and destination in the returned bindings if requested
          if (includeUrisBound) {
              result.append("BIND (").append(sparqlWrapUri(origin)).append(" as ?origin) .").append(NL);
              result.append("BIND (").append(sparqlWrapUri(destination)).append(" as ?destination) .").append(NL);
          }
          return result.toString();
      }
docs: Generate a pattern for check if two concepts have an exact match.
  Basically we look for either identical classes or equivalent ones
  Uses BIND which Requires SPARQL 1.1
  
  @param origin           the URL of the class we want to find exact matches for
  @param destination      the URL of the class we are checking the match for
  @param bindingVar       the name of the variable we will bind results to for
  ulterior inspection
  @param includeUrisBound
  @return the query pattern