@Override protected boolean test(final Literal l1, final Literal l2) { final ATermAppl l1name = l1.getTerm(); final ATermAppl l2name = l2.getTerm(); final String l1str = ATermUtils.getLiteralValue(l1name).toLowerCase(); final String l2str = ATermUtils.getLiteralValue(l2name).toLowerCase(); return l1str.contains(l2str); } }
@Override protected boolean test(final Literal l1, final Literal l2) { final ATermAppl l1name = l1.getTerm(); final ATermAppl l2name = l2.getTerm(); final String l1str = ATermUtils.getLiteralValue(l1name).toLowerCase(); final String l2str = ATermUtils.getLiteralValue(l2name).toLowerCase(); return l1str.contains(l2str); } }
@Override protected boolean test(final Literal l1, final Literal l2) { final ATermAppl l1name = l1.getTerm(); final ATermAppl l2name = l2.getTerm(); final String l1str = ATermUtils.getLiteralValue(l1name); final String l2str = ATermUtils.getLiteralValue(l2name); boolean result = false; try { result = Pattern.matches(l2str, l1str); } catch (final PatternSyntaxException e) { BuiltInRegistry._logger.log(Level.INFO, "Bad regex from builtin rule: " + l2, e); } return result; } }
@Override protected boolean test(final Literal l1, final Literal l2) { final ATermAppl l1name = l1.getTerm(); final ATermAppl l2name = l2.getTerm(); final String l1str = ATermUtils.getLiteralValue(l1name); final String l2str = ATermUtils.getLiteralValue(l2name); boolean result = false; try { result = Pattern.matches(l2str, l1str); } catch (final PatternSyntaxException e) { BuiltInRegistry._logger.log(Level.INFO, "Bad regex from builtin rule: " + l2, e); } return result; } }
@Override public Literal apply(final ABox abox, final Literal expected, final Literal... args) { if (args.length != 1) return null; final String val = ATermUtils.getLiteralValue(args[0].getTerm()); final String length = Integer.toString(val.length()); final Literal result = abox.addLiteral(ATermUtils.makeTypedLiteral(length, Namespaces.XSD + "integer")); return expectedIfEquals(expected, result); }
@Override public Literal apply(final ABox abox, final Literal expected, final Literal... args) { if (args.length != 1) return null; final String val = ATermUtils.getLiteralValue(args[0].getTerm()); final String length = Integer.toString(val.length()); final Literal result = abox.addLiteral(ATermUtils.makeTypedLiteral(length, Namespaces.XSD + "integer")); return expectedIfEquals(expected, result); }
@Override public void rebind(final VariableBinding newBinding) { if (_atom.getAllArguments().size() < 3) { _tokens = null; return; } final Literal matchLit = newBinding.get(_atom.getAllArguments().get(0)); if (matchLit != null) _match = ATermUtils.getLiteralValue(matchLit.getTerm()); final String splittingString = ATermUtils.getLiteralValue(newBinding.get(_atom.getAllArguments().get(1)).getTerm()); final String splittingPattern = ATermUtils.getLiteralValue(newBinding.get(_atom.getAllArguments().get(2)).getTerm()); final String[] splits = splittingString.split(splittingPattern); _tokens = Arrays.asList(splits).iterator(); if (_match != null) while (_tokens.hasNext()) { final String token = _tokens.next(); if (token.equals(_match)) { _tokens = Collections.singleton(token).iterator(); break; } } }
@Override public void rebind(final VariableBinding newBinding) { if (_atom.getAllArguments().size() < 3) { _tokens = null; return; } final Literal matchLit = newBinding.get(_atom.getAllArguments().get(0)); if (matchLit != null) _match = ATermUtils.getLiteralValue(matchLit.getTerm()); final String splittingString = ATermUtils.getLiteralValue(newBinding.get(_atom.getAllArguments().get(1)).getTerm()); final String splittingPattern = ATermUtils.getLiteralValue(newBinding.get(_atom.getAllArguments().get(2)).getTerm()); final String[] splits = splittingString.split(splittingPattern); _tokens = Arrays.asList(splits).iterator(); if (_match != null) while (_tokens.hasNext()) { final String token = _tokens.next(); if (token.equals(_match)) { _tokens = Collections.singleton(token).iterator(); break; } } }
@Override public Literal apply(final ABox abox, final Literal expected, final Literal... litArgs) { final String[] args = new String[litArgs.length]; for (int i = 0; i < litArgs.length; i++) args[i] = ATermUtils.getLiteralValue(litArgs[i].getTerm()); final String result = _function.apply(args); if (result == null) return null; ATermAppl resultTerm; if (_datatypeURI == null) resultTerm = ATermUtils.makePlainLiteral(result); else resultTerm = ATermUtils.makeTypedLiteral(result, _datatypeURI); final Literal resultLit = abox.addLiteral(resultTerm); return expectedIfEquals(expected, resultLit); }
@Override public Literal apply(final ABox abox, final Literal expected, final Literal... litArgs) { final String[] args = new String[litArgs.length]; for (int i = 0; i < litArgs.length; i++) args[i] = ATermUtils.getLiteralValue(litArgs[i].getTerm()); final String result = _function.apply(args); if (result == null) return null; ATermAppl resultTerm; if (_datatypeURI == null) resultTerm = ATermUtils.makePlainLiteral(result); else resultTerm = ATermUtils.makeTypedLiteral(result, _datatypeURI); final Literal resultLit = abox.addLiteral(resultTerm); return expectedIfEquals(expected, resultLit); }
final DependencySet ds = edge.getDepends(); final Literal literal = (Literal) edge.getTo(); final ATermAppl literalValue = literal.getTerm(); if (literalValue != null)
final DependencySet ds = edge.getDepends(); final Literal literal = (Literal) edge.getTo(); final ATermAppl literalValue = literal.getTerm(); if (literalValue != null)
@Test public void testTokenizeBinding() { final KnowledgeBaseImpl kb = new KnowledgeBaseImpl(); final AtomDConstant data = new AtomDConstant(literal("hi;bye;foo;bar")); final AtomDVariable x = new AtomDVariable("x"); final AtomDConstant semicolan = new AtomDConstant(literal(";")); final Collection<AtomVariable> emptyCollection = Collections.emptySet(); final Collection<AtomVariable> xSingleton = Collections.singleton((AtomVariable) x); final BuiltInAtom oneVarAtom = new BuiltInAtom(Namespaces.SWRLB + "tokenize", x, data, semicolan); final BindingHelper sharedVarHelper = StringOperators.tokenize.createHelper(oneVarAtom); assertTrue(sharedVarHelper.getBindableVars(emptyCollection).equals(xSingleton)); final VariableBinding emptyBinding = new VariableBinding(kb.getABox()); sharedVarHelper.rebind(emptyBinding); final VariableBinding fillBinding = new VariableBinding(kb.getABox()); final List<String> expected = Arrays.asList(new String[] { "hi", "bye", "foo", "bar" }); final List<String> tokens = new ArrayList<>(); while (sharedVarHelper.selectNextBinding()) { sharedVarHelper.setCurrentBinding(fillBinding); final String token = ATermUtils.getLiteralValue(fillBinding.get(x).getTerm()); tokens.add(token); } assertEquals("String tokenizer returned unexpected sequence of tokens", expected, tokens); }
@Test public void testTokenizeBindingEmpty() { final KnowledgeBaseImpl kb = new KnowledgeBaseImpl(); final AtomDConstant data = new AtomDConstant(literal("hi;bye;foo;bar")); final AtomDVariable x = new AtomDVariable("x"); final AtomDConstant comma = new AtomDConstant(literal(",")); final Collection<AtomVariable> emptyCollection = Collections.emptySet(); final Collection<AtomVariable> xSingleton = Collections.singleton((AtomVariable) x); final BuiltInAtom oneVarAtom = new BuiltInAtom(Namespaces.SWRLB + "tokenize", x, data, comma); final BindingHelper sharedVarHelper = StringOperators.tokenize.createHelper(oneVarAtom); assertTrue(sharedVarHelper.getBindableVars(emptyCollection).equals(xSingleton)); final VariableBinding emptyBinding = new VariableBinding(kb.getABox()); sharedVarHelper.rebind(emptyBinding); final VariableBinding fillBinding = new VariableBinding(kb.getABox()); final List<String> expected = Collections.singletonList(ATermUtils.getLiteralValue(data.getValue())); final List<String> tokens = new ArrayList<>(); while (sharedVarHelper.selectNextBinding()) { sharedVarHelper.setCurrentBinding(fillBinding); final String token = ATermUtils.getLiteralValue(fillBinding.get(x).getTerm()); tokens.add(token); } assertEquals("String tokenizer returned unexpected sequence of tokens", expected, tokens); }