@Override public void visit(final DatavaluedPropertyAtom atom) { helpers.add(new DatavaluePropertyBindingHelper(_abox, atom)); }
if (_subject == null || isObjectSet()) _subject = _subjectIterator.next(); if (!isObjectSet()) _objectIterator = new LiteralFilter(_subject.getRNeighbors(getRole()).iterator()); if (isObjectSet()) final boolean result = _subject.getRNeighbors(getRole()).contains(getObject()); if (result) return true;
/** * Set the incoming binding for this helper. This fixes any variables that are already bound by a preceding Binding Helper. * * @param newBinding Binding map. Copied on input. */ @Override public void rebind(final VariableBinding newBinding) { _binding = new VariableBinding(newBinding); if (getSubject() != null) _subjectIterator = Collections.singleton(getSubject()).iterator(); else _subjectIterator = new AllNamedIndividualsIterator(_abox); }
if (_subject == null || isObjectSet()) _subject = _subjectIterator.next(); if (!isObjectSet()) _objectIterator = new LiteralFilter(_subject.getRNeighbors(getRole()).iterator()); if (isObjectSet()) final boolean result = _subject.getRNeighbors(getRole()).contains(getObject()); if (result) return true;
@Override public void visit(final DatavaluedPropertyAtom atom) { helpers.add(new DatavaluePropertyBindingHelper(_abox, atom)); }
/** * Set the incoming binding for this helper. This fixes any variables that are already bound by a preceding Binding Helper. * * @param newBinding Binding map. Copied on input. */ @Override public void rebind(final VariableBinding newBinding) { _binding = new VariableBinding(newBinding); if (getSubject() != null) _subjectIterator = Collections.singleton(getSubject()).iterator(); else _subjectIterator = new AllNamedIndividualsIterator(_abox); }
@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 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 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 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()); }