amalgame/commit
Avoid long waiting time for opening /amalgame/app/build url by caching results of rdf_literal_predicates/1
author | Jacco van Ossenbruggen |
---|---|
Tue Oct 25 16:55:21 2016 +0200 | |
committer | Jacco van Ossenbruggen |
Tue Oct 25 16:55:21 2016 +0200 | |
commit | 64f34e90bfc23af682eb11b3fdcf24d8a5ff34de |
tree | a742ee7d81230485c2fc802b4609ecbabb22d2d7 |
parent | d1ff40501933e067ff9f0b163c4c6f07159a829e |
Diff style: patch stat
diff --git a/lib/amalgame/rdf_util.pl b/lib/amalgame/rdf_util.pl index 930d4ab..0fd1baa 100644 --- a/lib/amalgame/rdf_util.pl +++ b/lib/amalgame/rdf_util.pl @@ -19,6 +19,9 @@ rdf_lang(r,r,-), rdf_lang(r,r,+,-). +:- dynamic + rdf_literal_predicates_cache/1. + %% rdf_has(S,P,O,RP,G) is nondet % % Behaves as rdf_has/4 but the underlying triple needs to be in @@ -31,9 +34,13 @@ rdf_has(S,P,O,RP,G) :- rdf(S,RP,O,G:_) ). +rdf_literal_predicates(L) :- + rdf_literal_predicates_cache(L),!. + rdf_literal_predicates(L) :- findall(P, rdf_is_literal_predicate(P), Ps), - sort(Ps, L). + sort(Ps, L), + assert(rdf_literal_predicates_cache(L)). rdf_is_literal_predicate(P) :- rdf_current_predicate(P),