private static boolean matchModels(Model model1, Model model2) { // Compare statements without blank nodes first, save the rest for later List<Statement> model1BNodes = new ArrayList<Statement>(model1.size()); for (Statement st : model1) { if (isBlank(st.getSubject()) || isBlank(st.getObject()) || isBlank(st.getContext())) { model1BNodes.add(st); } else { if (!model2.contains(st)) { return false; } } } return matchModels(model1BNodes, model2, new HashMap<Resource, Resource>(), 0); }
private static boolean matchModels(Model model1, Model model2) { // Compare statements without blank nodes first, save the rest for later List<Statement> model1BNodes = new ArrayList<>(model1.size()); for (Statement st : model1) { if (isBlank(st.getSubject()) || isBlank(st.getObject()) || isBlank(st.getContext())) { model1BNodes.add(st); } else { if (!model2.contains(st)) { return false; } } } return matchModels(model1BNodes, model2, new HashMap<>(), 0); }
private static List<Statement> findMatchingStatements(Statement st, Model model, Map<Resource, Resource> bNodeMapping) { Resource s = isBlank(st.getSubject()) ? null : st.getSubject(); IRI p = st.getPredicate(); Value o = isBlank(st.getObject()) ? null : st.getObject(); Resource[] g = isBlank(st.getContext()) ? new Resource[0] : new Resource[] { st.getContext() }; List<Statement> result = new ArrayList<>(); for (Statement modelSt : model.filter(s, p, o, g)) { if (statementsMatch(st, modelSt, bNodeMapping)) { // All components possibly match result.add(modelSt); } } return result; }
private static List<Statement> findMatchingStatements(Statement st, Model model, Map<Resource, Resource> bNodeMapping) { Resource s = isBlank(st.getSubject()) ? null : st.getSubject(); IRI p = st.getPredicate(); Value o = isBlank(st.getObject()) ? null : st.getObject(); Resource[] g = isBlank(st.getContext()) ? new Resource[0] : new Resource[] { st.getContext() }; List<Statement> result = new ArrayList<Statement>(); for (Statement modelSt : model.filter(s, p, o, g)) { if (statementsMatch(st, modelSt, bNodeMapping)) { // All components possibly match result.add(modelSt); } } return result; }
Resource subj2 = st2.getSubject(); if (isBlank(subj1) && isBlank(subj2)) { Resource mappedBNode = bNodeMapping.get(subj1); Value obj2 = st2.getObject(); if (isBlank(obj1) && isBlank(obj2)) { Resource mappedBNode = bNodeMapping.get(obj1); if (isBlank(context1) && isBlank(context2)) { Resource mappedBNode = bNodeMapping.get(context1);
Resource subj2 = st2.getSubject(); if (isBlank(subj1) && isBlank(subj2)) { Resource mappedBNode = bNodeMapping.get(subj1); Value obj2 = st2.getObject(); if (isBlank(obj1) && isBlank(obj2)) { Resource mappedBNode = bNodeMapping.get(obj1); if (isBlank(context1) && isBlank(context2)) { Resource mappedBNode = bNodeMapping.get(context1);
if (isBlank(st1.getSubject()) && isBlank(st2.getSubject())) { newBNodeMapping.put(st1.getSubject(), st2.getSubject()); if (isBlank(st1.getObject()) && isBlank(st2.getObject())) { newBNodeMapping.put((Resource)st1.getObject(), (Resource)st2.getObject()); if (isBlank(st1.getContext()) && isBlank(st2.getContext())) { newBNodeMapping.put(st1.getContext(), st2.getContext());
if (isBlank(st1.getSubject()) && isBlank(st2.getSubject())) { newBNodeMapping.put(st1.getSubject(), st2.getSubject()); if (isBlank(st1.getObject()) && isBlank(st2.getObject())) { newBNodeMapping.put((Resource)st1.getObject(), (Resource)st2.getObject()); if (isBlank(st1.getContext()) && isBlank(st2.getContext())) { newBNodeMapping.put(st1.getContext(), st2.getContext());