if (leftPath.getLength() != rightPath.getLength())
continue;
if (comparableResources.contains(leftPath.getEnd(), rightPath.getEnd())) {
- boolean preds = true;
+ boolean match = true;
for (int i = 0; i < leftPath.getLength(); i++) {
Statement sl = leftPath.getStatements().get(i);
Statement sr = rightPath.getStatements().get(i);
if (!sl.getPredicate().equals(sr.getPredicate()) && !comparableResources.contains(sl.getPredicate(), sr.getPredicate())) {
- preds = false;
+ match = false;
+ break;
+ }
+ if ((getComparableResources().containsLeft(sl.getObject()) || getComparableResources().containsRight(sr.getObject())) && !getComparableResources().contains(sl.getObject(), sr.getObject())) {
+ match = false;
break;
}
}
- if (preds) {
+ if (match) {
map.map(leftPath, rightPath);
break;
}
}
}
- private void addModification(Resource sub1, Statement s1, Resource sub2, Statement s2) {
- Modification mod = new Modification(sub1, sub2, s1, s2);
+ private void addModification(Resource left, Statement leftstm, Resource right, Statement rightstm) {
+ Modification mod = new Modification(left, right, leftstm, rightstm);
if (!modificationsSet.contains(mod)) {
modificationsSet.add(mod);
modifications.add(mod);
boolean b2 = g.hasValue(s2.getObject());
if (b1 == b2) {
if (b1) {
-// Object v1 = g.getValue(s1.getObject());
-// Object v2 = g.getValue(s2.getObject());
-// boolean eq = compareValue(v1, v2);
+ // Literals
boolean eq = compareValue(g,b,s1.getObject(), s2.getObject());
if (!eq) {
addModification(r1,s1,r2,s2);
addComparable(s1, s2);
}
} else {
- if (!s1.getObject().equals(s1.getSubject()) && !s2.getObject().equals(s2.getSubject()))
- compareProps(s1.getObject(), s2.getObject());
+ // Non literal properties.
+ if (comparator.compare(g, s1.getObject(), s2.getObject()) != ResourceComparator.NO_MATCH) {
+ if (!s1.getObject().equals(s1.getSubject()) && !s2.getObject().equals(s2.getSubject()))
+ // TODO compare props matches objects, so this is questionable.
+ compareProps(s1.getObject(), s2.getObject());
+ else
+ addModification(r1,s1,r2,s2);
+ } else {
+ addModification(r1,s1,r2,s2);
+ }
}
} else {
addModification(r1,s1,r2,s2);