/** * Apply the function to the list of nodes passed as arguments and return the result as type T. * Throws IllegalArgumentException if the function cannot be applied to the nodes passed as argument * or the number of arguments is not correct. * * @return */ @Override public boolean accept(RDFBackend<Node> rdfBackend, Node context, Node node) throws IllegalArgumentException { if(rdfBackend.isLiteral(node)) { if(lang != null && !lang.toLowerCase().equals("none")) { return new Locale(lang).equals(rdfBackend.getLiteralLanguage(node)); } else { return rdfBackend.getLiteralLanguage(node) == null; } } else { return false; } }
/** * Apply the function to the list of nodes passed as arguments and return the result as type T. * Throws IllegalArgumentException if the function cannot be applied to the nodes passed as argument * or the number of arguments is not correct. * * @return */ @Override public boolean accept(RDFBackend<Node> rdfBackend, Node context, Node node) throws IllegalArgumentException { if(rdfBackend.isLiteral(node)) { if(lang != null && !lang.toLowerCase().equals("none")) { return new Locale(lang).equals(rdfBackend.getLiteralLanguage(node)); } else { return rdfBackend.getLiteralLanguage(node) == null; } } else { return false; } }
@SafeVarargs @Override public final Collection<Node> apply(RDFBackend<Node> backend, Node context, Collection<Node>... args) throws IllegalArgumentException { if (args.length != 3 || args[1].size() != 1 || args[2].size() != 1) { throw new IllegalArgumentException("wrong usage: " + getSignature()); } Collection<Node> nodes = args[0]; String regex = transformer.transform(backend, args[1].iterator().next(), null); String replace = transformer.transform(backend, args[2].iterator().next(), null); try { final Pattern pattern = Pattern.compile(regex); Set<Node> result = new HashSet<>(); for (Node node : nodes) { final String string = backend.stringValue(node); final String replaced = pattern.matcher(string).replaceAll(replace); if (backend.isURI(node)) { result.add(backend.createURI(replaced)); } else if (backend.isLiteral(node)) { final Locale lang = backend.getLiteralLanguage(node); final URI type = backend.getLiteralType(node); result.add(backend.createLiteral(replaced, lang, type)); } } return result; } catch (PatternSyntaxException pex) { throw new IllegalArgumentException("could not parse regex pattern: '" + regex + "'", pex); } catch (IndexOutOfBoundsException iobex) { throw new IllegalArgumentException("invalid replacement string: '" + replace + "'"); } }
result.addReference(entry.getKey(), backend.stringValue(value)); } else if(backend.isLiteral(value)){ //literal Locale locale = backend.getLiteralLanguage(value); if(locale != null){ //text with language String lang = locale.getLanguage();
result.addReference(entry.getKey(), backend.stringValue(value)); } else if(backend.isLiteral(value)){ //literal Locale locale = backend.getLiteralLanguage(value); if(locale != null){ //text with language String lang = locale.getLanguage();