return new BindingGeneratorImpl(); return new BindingGeneratorImpl(initialBinding, helpers);
return new BindingGeneratorImpl(); return new BindingGeneratorImpl(initialBinding, helpers);
@Test public void testObjectVariableBindingGenerator() { _kb.addIndividual(mary); _kb.addIndividual(robert); _kb.addIndividual(victor); final BindingHelper genHelper = new ObjectVariableBindingHelper(_kb.getABox(), _x); final BindingGenerator gen = new BindingGeneratorImpl(new VariableBinding(_kb.getABox()), Collections.singletonList(genHelper)); assertIteratorValues(new BindingToMapIterator(gen.iterator()), new Object[] { Collections.singletonMap(_x, mary), Collections.singletonMap(_x, robert), Collections.singletonMap(_x, victor), }); }
@Test public void testDatavalueBindingGeneratorObjects() { final DatavaluedPropertyAtom pattern = new DatavaluedPropertyAtom(dp2, new AtomIConstant(mary), _z); final BindingHelper genHelper = new DatavaluePropertyBindingHelper(_kb.getABox(), pattern); final BindingGenerator gen = new BindingGeneratorImpl(new VariableBinding(_kb.getABox()), Collections.singletonList(genHelper)); assertIteratorValues(new BindingToMapIterator(gen.iterator()), new Object[] { Collections.singletonMap(_z, data1), Collections.singletonMap(_z, data2), }); }
@Test public void testDatavalueBindingGeneratorSubjects() { final DatavaluedPropertyAtom pattern = new DatavaluedPropertyAtom(dp2, _x, new AtomDConstant(data2)); final BindingHelper genHelper = new DatavaluePropertyBindingHelper(_kb.getABox(), pattern); final BindingGenerator gen = new BindingGeneratorImpl(new VariableBinding(_kb.getABox()), Collections.singletonList(genHelper)); assertIteratorValues(new BindingToMapIterator(gen.iterator()), new Object[] { Collections.singletonMap(_x, mary), Collections.singletonMap(_x, robert), }); }
@Test public void testCombinatorialBindingGeneration() { final BindingHelper genHelper1 = new ObjectVariableBindingHelper(_kb.getABox(), _x); final BindingHelper genHelper2 = new ObjectVariableBindingHelper(_kb.getABox(), _y); final Individual[] individualsUsed = { _kb.getABox().getIndividual(mary), _kb.getABox().getIndividual(robert), _kb.getABox().getIndividual(victor), }; final List<BindingHelper> genSet = new ArrayList<>(); final BindingGenerator emptyGen = new BindingGeneratorImpl(new VariableBinding(_kb.getABox()), genSet); assertFalse(emptyGen.iterator().hasNext()); genSet.add(genHelper1); genSet.add(genHelper2); final BindingGenerator gen = new BindingGeneratorImpl(new VariableBinding(_kb.getABox()), genSet); final List<VariableBinding> expected = new LinkedList<>(); for (final Individual xNode : individualsUsed) for (final Individual yNode : individualsUsed) { final VariableBinding bindings = new VariableBinding(_kb.getABox()); bindings.set(_x, xNode); bindings.set(_y, yNode); expected.add(bindings); } assertIteratorValues(gen.iterator(), expected.iterator()); }
@Test public void testDataRangeBindingHelper() { final DatavaluedPropertyAtom pattern = new DatavaluedPropertyAtom(dp2, _x, _z); final DataRangeAtom atom = new DataRangeAtom(ATermUtils.makeTermAppl(Namespaces.XSD + "integer"), _z); final BindingHelper patternHelper = new DatavaluePropertyBindingHelper(_kb.getABox(), pattern); final BindingHelper rangeHelper = new DataRangeBindingHelper(_kb.getABox(), atom); final BindingGenerator gen = new BindingGeneratorImpl(new VariableBinding(_kb.getABox()), Arrays.asList(new BindingHelper[] { patternHelper, rangeHelper, })); final VariableBinding expectedBinding = new VariableBinding(_kb.getABox()); expectedBinding.set(_x, _kb.getABox().getIndividual(victor)); expectedBinding.set(_z, _kb.getABox().getLiteral(data4)); final List<VariableBinding> expected = new LinkedList<>(); expected.add(expectedBinding); assertIteratorValues(gen.iterator(), expected.iterator()); }
@Test public void testDatavalueBindingGeneratorChainedSubject() { final DatavaluedPropertyAtom pattern1 = new DatavaluedPropertyAtom(dp2, _x, new AtomDConstant(data2)); final DatavaluedPropertyAtom pattern2 = new DatavaluedPropertyAtom(dp2, _y, new AtomDConstant(data2)); final BindingHelper genHelper1 = new DatavaluePropertyBindingHelper(_kb.getABox(), pattern1); final BindingHelper genHelper2 = new DatavaluePropertyBindingHelper(_kb.getABox(), pattern2); final BindingGenerator gen = new BindingGeneratorImpl(new VariableBinding(_kb.getABox()), Arrays.asList(new BindingHelper[] { genHelper1, genHelper2 })); final List<VariableBinding> expected = new LinkedList<>(); VariableBinding binding; final ATermAppl[] names = new ATermAppl[] { mary, robert }; for (final ATermAppl xName : names) for (final ATermAppl yName : names) { final Individual xNode = _kb.getABox().getIndividual(xName); final Individual yNode = _kb.getABox().getIndividual(yName); binding = new VariableBinding(_kb.getABox()); binding.set(_x, xNode); binding.set(_y, yNode); expected.add(binding); } assertIteratorValues(gen.iterator(), expected.iterator()); }
@Test public void testDatavalueBindingGeneratorChained() { final DatavaluedPropertyAtom pattern1 = new DatavaluedPropertyAtom(dp2, _x, _z); final DatavaluedPropertyAtom pattern2 = new DatavaluedPropertyAtom(dp2, _y, _z); final BindingHelper genHelper1 = new DatavaluePropertyBindingHelper(_kb.getABox(), pattern1); final BindingHelper genHelper2 = new DatavaluePropertyBindingHelper(_kb.getABox(), pattern2); final BindingGenerator gen = new BindingGeneratorImpl(new VariableBinding(_kb.getABox()), Arrays.asList(new BindingHelper[] { genHelper1, genHelper2 })); final List<VariableBinding> expected = new LinkedList<>(); VariableBinding binding; final ATermAppl[] names = new ATermAppl[] { mary, robert, victor }; final ATermAppl[] values = new ATermAppl[] { data1, data2, data3, data4 }; for (final ATermAppl xName : names) for (final ATermAppl yName : names) for (final ATermAppl zValue : values) { final Individual xNode = _kb.getABox().getIndividual(xName); final Individual yNode = _kb.getABox().getIndividual(yName); final Literal zNode = _kb.getABox().addLiteral(zValue); if (_kb.hasPropertyValue(xName, dp2, zValue) && _kb.hasPropertyValue(yName, dp2, zValue)) { binding = new VariableBinding(_kb.getABox()); binding.set(_x, xNode); binding.set(_y, yNode); binding.set(_z, zNode); expected.add(binding); } } assertIteratorValues(gen.iterator(), expected.iterator()); }