public Collection<ViewDefinition> read(Model model) { List<TriplesMap> triplesMaps = model.listSubjectsWithProperty(RR.logicalTable).mapWith(r -> r.as(TriplesMap.class)).toList(); List<ViewDefinition> result = triplesMaps.stream() .map(tm -> read(tm)) .collect(Collectors.toList()); return result; }
public Collection<ViewDefinition> read(Model model) { List<TriplesMap> triplesMaps = model.listSubjectsWithProperty(RR.logicalTable).mapWith(r -> r.as(TriplesMap.class)).toList(); List<ViewDefinition> result = triplesMaps.stream() .map(tm -> read(tm)) .collect(Collectors.toList()); return result; }
public ExtendedIterator<RDFNode> evalReverse(RDFNode valueNode, NodeExpressionContext context) { // See isReversible, this only supports trivial cases for now if(isInverse) { if(valueNode instanceof Literal) { return WrappedIterator.emptyIterator(); } else { return context.getDataset().getDefaultModel().listObjectsOfProperty((Resource)valueNode, predicate); } } else { return context.getDataset().getDefaultModel().listSubjectsWithProperty(predicate, valueNode).mapWith(r -> (RDFNode)r); } }
private ExtendedIterator<RDFNode> evalFocusNode(RDFNode focusNode, NodeExpressionContext context) { if(jenaPath == null) { if(focusNode.isLiteral()) { return WrappedIterator.emptyIterator(); } else { return context.getDataset().getDefaultModel().listObjectsOfProperty((Resource)focusNode, predicate); } } else if(isInverse) { return context.getDataset().getDefaultModel().listSubjectsWithProperty(predicate, focusNode).mapWith(r -> (RDFNode)r); } else { // This ought to do lazy evaluation too List<RDFNode> results = new LinkedList<>(); SHACLPaths.addValueNodes(focusNode.inModel(context.getDataset().getDefaultModel()), jenaPath, results); return WrappedIterator.create(results.iterator()); } }