/** * Returns all triple patterns in given SPARQL query that have the given node in object position, i.e. the incoming * triple patterns. * @param query The SPARQL query. * @param node the node * @return */ public Set<Triple> extractIncomingTriplePatterns(Query query, Node node){ return extractTriplePattern(query, false).stream() .filter(tp -> tp.objectMatches(node)) .collect(Collectors.toSet()); }
/** * Returns all triple patterns in given SPARQL query that have the given * node in object position, i.e. the incoming triple patterns. * * @param query The SPARQL query. */ public Set<Triple> extractIncomingTriplePatterns(final Query query, final Node node) { Set<Triple> triplePatterns = extractTriplePattern(query, false); // remove triple patterns not containing triple patterns with given node // in subject position for (Iterator<Triple> iterator = triplePatterns.iterator(); iterator.hasNext();) { Triple triple = iterator.next(); if (!triple.objectMatches(node)) { iterator.remove(); } } return triplePatterns; }
/** * Returns all triple patterns in given SPARQL query that have the given * node in object position, i.e. the ingoing triple patterns. * * @param query The SPARQL query. */ public Set<Triple> extractIngoingTriplePatterns(final Query query, final Node node) { Set<Triple> triplePatterns = extractTriplePattern(query, false); // remove triple patterns not containing triple patterns with given node // in object position for (Iterator<Triple> iterator = triplePatterns.iterator(); iterator.hasNext();) { Triple triple = iterator.next(); if (!triple.objectMatches(node)) { iterator.remove(); } } return triplePatterns; }
@Override public int compare(Triple o1, Triple o2) { boolean same = o1.objectMatches(o2.getObject()) && o2.predicateMatches(o2.getPredicate()) && o1.getSubject().isVariable() && o2.getSubject().isVariable(); // && !var2IncomingTPs.containsKey(o1.getObject()); if (same) return 0; return comp.compare(o1, o2); } });
public void testElementMatches() { assertTrue( NodeCreateUtils.createTriple( "S P O" ).subjectMatches( node( "S" ) ) ); assertTrue( NodeCreateUtils.createTriple( "S P O" ).predicateMatches( node( "P" ) ) ); assertTrue( NodeCreateUtils.createTriple( "S P O" ).objectMatches( node( "O" ) ) ); /* */ assertFalse( NodeCreateUtils.createTriple( "S P O" ).subjectMatches( node( "Z" ) ) ); assertFalse( NodeCreateUtils.createTriple( "S P O" ).predicateMatches( node( "Q" ) ) ); assertFalse( NodeCreateUtils.createTriple( "S P O" ).objectMatches( node( "I" ) ) ); /* */ assertTrue( NodeCreateUtils.createTriple( "?? P O" ).subjectMatches( node( "SUB" ) ) ); assertTrue( NodeCreateUtils.createTriple( "S ?? O" ).predicateMatches( node( "PRED" ) ) ); assertTrue( NodeCreateUtils.createTriple( "S P ??" ).objectMatches( node( "OBJ" ) ) ); }
public void testElementMatches() { assertTrue( NodeCreateUtils.createTriple( "S P O" ).subjectMatches( node( "S" ) ) ); assertTrue( NodeCreateUtils.createTriple( "S P O" ).predicateMatches( node( "P" ) ) ); assertTrue( NodeCreateUtils.createTriple( "S P O" ).objectMatches( node( "O" ) ) ); /* */ assertFalse( NodeCreateUtils.createTriple( "S P O" ).subjectMatches( node( "Z" ) ) ); assertFalse( NodeCreateUtils.createTriple( "S P O" ).predicateMatches( node( "Q" ) ) ); assertFalse( NodeCreateUtils.createTriple( "S P O" ).objectMatches( node( "I" ) ) ); /* */ assertTrue( NodeCreateUtils.createTriple( "?? P O" ).subjectMatches( node( "SUB" ) ) ); assertTrue( NodeCreateUtils.createTriple( "S ?? O" ).predicateMatches( node( "PRED" ) ) ); assertTrue( NodeCreateUtils.createTriple( "S P ??" ).objectMatches( node( "OBJ" ) ) ); }