+ \r
+ private void processUnreliable(Set<Statement> unreliableLeft, Set<Statement> unreliableRight) {\r
+ MapList<Resource,Statement> subjectLeft = new MapList<Resource, Statement>();\r
+ MapList<Resource,Statement> subjectRight = new MapList<Resource, Statement>();\r
+ MapList<Resource,Statement> objectLeft = new MapList<Resource, Statement>();\r
+ MapList<Resource,Statement> objectRight = new MapList<Resource, Statement>();\r
+ \r
+ for (Statement s : unreliableLeft) {\r
+ subjectLeft.add(s.getSubject(),s);\r
+ objectLeft.add(s.getObject(),s);\r
+ }\r
+ for (Statement s : unreliableRight) {\r
+ subjectRight.add(s.getSubject(),s);\r
+ objectRight.add(s.getObject(),s);\r
+ }\r
+ \r
+ for (Resource left : subjectLeft.getKeys()) {\r
+ if (!comparableResources.containsLeft(left))\r
+ continue;\r
+ Resource right = comparableResources.getRight(left);\r
+ for (Statement leftS : subjectLeft.getValues(left)) {\r
+ Resource leftO = leftS.getObject();\r
+ if (!comparableResources.containsLeft(leftO)) \r
+ continue;\r
+ if (!unreliableLeft.contains(leftS))\r
+ continue;\r
+ Resource rightO = comparableResources.getRight(leftO);\r
+ for (Statement rightS : subjectRight.getValues(right)) {\r
+ if (!rightS.getObject().equals(rightO))\r
+ continue;\r
+ if (!unreliableRight.contains(rightS))\r
+ continue;\r
+ if (leftS.getPredicate().equals(rightS.getPredicate()) ||\r
+ comparableResources.contains(leftS.getPredicate(), rightS.getPredicate())) {\r
+ unreliableLeft.remove(leftS);\r
+ unreliableRight.remove(rightS);\r
+ comparableStatements.map(leftS, rightS);\r
+ }\r
+ }\r
+ }\r
+ \r
+ }\r
+ }\r
+ \r