/** Gets a given resource (including the #this reference) from a model. **/ public static Resource getResource(String url, Model model) { List<Resource> matchingSubjects = model.listSubjects() .filterKeep(s -> s.getURI() != null) .filterKeep(s -> s.getURI().equalsIgnoreCase(url) || s.getURI().equalsIgnoreCase(url + "#this")).toList(); if (matchingSubjects.isEmpty()) { return null; } checkState(matchingSubjects.size() == 1, "Model %s didn't contain %s", model, url); return matchingSubjects.get(0); }
/** Convert IRI Nodes to strings. Skip other kinds of Node */ public static Iterator<String> nodesToURIs(Iterator<Node> iter) { MapFilter<Node, String> mapper = new MapFilter<Node, String>() { @Override public String accept(Node x) { return x.getURI() ; } } ; ExtendedIterator<Node> eIter = WrappedIterator.create(iter) ; Iterator<String> conv = new MapFilterIterator<>(mapper, eIter) ; return conv ; }
@Override public ReifiedStatement next() { return iter.next(); }
@Override public Set<Resource> toSet() { return iter.toSet(); } }
@Override public ExtendedIterator<Resource> filterDrop( final Predicate<Resource> f ) { return iter.filterDrop(f); }
@Override protected void closeIterator() { if ( iterator != null ) { NiceIterator.close(iterator) ; iterator = null ; } }
/** make a new iterator, which is our elements that pass the filter */ @Override public FilterIterator<T> filterKeep( Predicate<T> f ) { return new FilterIterator<>( f, this ); }
/** Answer a list of the elements in order, consuming this iterator. */ @Override public List<T> toList() { return asList( this ); }
/** Answer a list of the elements in order, consuming this iterator. */ @Override public Set<T> toSet() { return asSet( this ); }
/** Answer an iterator over the elements of <code>i</code> that are not in the graph <code>seen</code>. */ public static ExtendedIterator<Triple> rejecting( final ExtendedIterator<Triple> i, final Graph seen ) { return i.filterDrop( seen::contains ); }