amalgame/commit

IMPROVED: switch order of rdf_has/5 predicates based on instantiated patterns

authorJacco van Ossenbruggen
Fri Mar 6 13:07:10 2015 +0100
committerJacco van Ossenbruggen
Fri Mar 6 13:07:10 2015 +0100
commitfc3fc71d20ac5f346e642901ec524230536a539b
tree902e13a20d1faff84c9c1bc2004246f6110232ac
parent5fc88e3a70ee8ace62fcb9dc1ae5c9d1a74324c0
Diff style: patch stat
diff --git a/lib/amalgame/rdf_util.pl b/lib/amalgame/rdf_util.pl
index a6b0991..930d4ab 100644
--- a/lib/amalgame/rdf_util.pl
+++ b/lib/amalgame/rdf_util.pl
@@ -24,8 +24,12 @@
 %	Behaves as rdf_has/4 but the underlying triple needs to be in
 %	named graph G.
 rdf_has(S,P,O,RP,G) :-
-	rdf_has(S,P,O,RP),
-	rdf(S,RP,O,G).
+	(   ground(G)
+	->  rdf(S,RP,O,G:_),
+	    rdf_has(S,P,O,RP)
+	;   rdf_has(S,P,O,RP),
+	    rdf(S,RP,O,G:_)
+	).
 
 rdf_literal_predicates(L) :-
 	findall(P, rdf_is_literal_predicate(P), Ps),