autocompletion/commit
make in_scheme filter hookable so we can autocomplete on virtual schemes in amalgame
author | Jacco van Ossenbruggen |
---|---|
Tue Sep 2 15:01:22 2014 +0200 | |
committer | Jacco van Ossenbruggen |
Tue Sep 2 15:01:22 2014 +0200 | |
commit | 235d3e2fe42c063e27e3231bfeab5d4522d88eaa |
tree | 66528ce3e374a2d040039dd6d3b68f70c22ab481 |
parent | 52b78929e93eabcf8a696997aed5c03fe7939521 |
Diff style: patch stat
diff --git a/lib/ac_filter.pl b/lib/ac_filter.pl index 558438c..ef9cfdb 100644 --- a/lib/ac_filter.pl +++ b/lib/ac_filter.pl @@ -3,14 +3,17 @@ filter_to_goal/3 % +FilterList, +R, -Goal ]). -:- use_module(library('semweb/rdf_db')). - -%:- use_module(serql(rdf_optimise)). - :- use_module(library(error)). + :- use_module(library(http/json_convert)). :- use_module(library(http/json)). +:- use_module(library('semweb/rdf_db')). + +:- multifile + cliopatria:in_scheme/2. % filter hook +:- public + acfilter:in_scheme/2. % predicate calling hook above %% target_goal(+Goal, +R, -URI) % @@ -81,8 +84,7 @@ filter(type(Class), R, Goal) :- !, ) ). filter(scheme(Scheme), R, Goal) :- !, - rdf_equal(P, skos:inScheme), - Goal = rdf(R, P, Scheme). + Goal = acfilter:in_scheme(R, Scheme). filter(prop(P, V), R, Goal) :- !, ( P = all -> Goal = rdf_has(R, _, V) @@ -136,6 +138,12 @@ filter(group(P, [Value]), R, Goal) :- !, filter(Filter, _, _) :- domain_error(filter, Filter). +in_scheme(Concept, Scheme) :- + catch(cliopatria:in_scheme(Concept, Scheme), _, fail), + !. +in_scheme(Concept, Scheme) :- + rdf_equal(P, skos:inScheme), + rdf(Concept, P, Scheme). http:convert_parameter(json_filter, Atom, Term) :- atom_json_term(Atom, JSON, []),