amalgame/commit
REFACTORING: hide amalgame:includes behind stragey api
author | Jacco van Ossenbruggen |
---|---|
Tue Sep 9 10:18:44 2014 +0200 | |
committer | Jacco van Ossenbruggen |
Tue Sep 9 10:18:44 2014 +0200 | |
commit | 0da3c3dd3721afb186135f3d75c3574b98d05966 |
tree | 5525685ce8e77ddff4145624d260b69979f5aefd |
parent | 18ab9bf55969eda2be9db428e39659a7d505d7a9 |
Diff style: patch stat
diff --git a/api/form/amalgame/startpage.pl b/api/form/amalgame/startpage.pl index 8a462f6..46d5c02 100644 --- a/api/form/amalgame/startpage.pl +++ b/api/form/amalgame/startpage.pl @@ -16,6 +16,7 @@ :- use_module(user(user_db)). :- use_module(library(amalgame/rdf_util)). +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(amalgame/ag_provenance)). :- use_module(library(amalgame/util)). @@ -215,7 +216,7 @@ scheme_label(URI, Key-URI) :- add_schemes([], _). add_schemes([Scheme|Ss], Strategy) :- - rdf_assert(Strategy, amalgame:includes, Scheme, Strategy), + strategy_add_vocabulary(Strategy, Scheme), add_schemes(Ss, Strategy). new_strategy_name(Strategy, NS) :- diff --git a/api/hints.pl b/api/hints.pl index 42001c7..70096d5 100644 --- a/api/hints.pl +++ b/api/hints.pl @@ -6,6 +6,7 @@ :- use_module(library(semweb/rdf_db)). :- use_module(library(semweb/rdfs)). :- use_module(library(semweb/rdf_label)). +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(amalgame/ag_stats)). :- use_module(library(amalgame/voc_stats)). :- use_module(library(amalgame/map)). @@ -68,8 +69,8 @@ find_hint(Strategy, Context, Hint) :- Focus == Strategy, \+ rdf(_, rdf:type, amalgame:'Mapping',Strategy), !, - rdf(Strategy, amalgame:includes, Voc1, Strategy), - rdf(Strategy, amalgame:includes, Voc2, Strategy), + strategy_vocabulary(Strategy, Voc1), + strategy_vocabulary(Strategy, Voc2), Voc1 \== Voc2, voc_property(Voc1, totalCount(Count1)), voc_property(Voc2, totalCount(Count2)), @@ -99,9 +100,9 @@ find_hint(Strategy, Context, Hint) :- % advise an exact label match using the focus as the source \+ rdf(_, rdf:type, amalgame:'Mapping',Strategy), option(focus(Focus), Context), - rdf(Strategy, amalgame:includes, Focus, Strategy), + strategy_vocabulary(Strategy, Focus), !, - rdf(Strategy, amalgame:includes, Target, Strategy), + strategy_vocabulary(Strategy, Target), Focus \== Target, rdf_equal(Match, amalgame:'ExactLabelMatcher'), rdf_display_label(Match, Label), diff --git a/api/node_info.pl b/api/node_info.pl index 158f52c..07b94b7 100644 --- a/api/node_info.pl +++ b/api/node_info.pl @@ -12,6 +12,7 @@ :- use_module(library(skos/util)). :- use_module(library(amalgame/amalgame_modules)). +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(amalgame/ag_stats)). :- use_module(library(amalgame/voc_stats)). :- use_module(library(amalgame/caching)). @@ -268,7 +269,11 @@ amalgame_info(URL, Strategy, ), append([Definition, Input],Optional). -amalgame_info(_URL, _Strategy, []). +amalgame_info(Strategy, Strategy, Results) :- + findall(vocabulary- \(cp_label:rdf_link(V)), + strategy_vocabulary(Strategy, V), Vocs), + append([Vocs], Results). + label_stats(Scheme, Strategy, Property, Stats) :- diff --git a/api/strategy_viz.pl b/api/strategy_viz.pl index 8e7d7d8..a260529 100644 --- a/api/strategy_viz.pl +++ b/api/strategy_viz.pl @@ -12,6 +12,7 @@ :- use_module(components(graphviz)). :- use_module(library(skos/util)). :- use_module(library(amalgame/voc_stats)). +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(amalgame/ag_stats)). :- use_module(library(amalgame/ag_evaluation)). :- use_module(library(amalgame/map)). @@ -105,7 +106,7 @@ amalgame_triples(Graph, Triples) :- % hack, to get a better layout we reverse the arrow :( amalgame_graph_triple(Graph,Graph,P,Scheme) :- rdf_equal(amalgame:includedIn, P), - rdf(Graph,amalgame:includes,Scheme,Graph). + strategy_vocabulary(Graph, Scheme). amalgame_graph_triple(Graph,O,P,S) :- rdf(S,P,O,Graph), is_amalgame_property(P), diff --git a/applications/builder.pl b/applications/builder.pl index 7983ce4..f9f8b5b 100644 --- a/applications/builder.pl +++ b/applications/builder.pl @@ -3,7 +3,6 @@ :- use_module(library(pairs)). :- use_module(library(settings)). -:- use_module(library(semweb/rdf_db)). :- use_module(library(http/http_dispatch)). :- use_module(library(http/http_parameters)). :- use_module(library(http/http_path)). @@ -12,6 +11,7 @@ :- use_module(library(yui3_beta)). :- use_module(user(user_db)). +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(amalgame/voc_stats)). :- use_module(library(amalgame/util)). :- use_module(library(amalgame/json_util)). @@ -79,7 +79,7 @@ amalgame:prebuilder(Strategy) :- precalc_voc_stats(Strategy) :- % handy to know how many concepts etc are in each vocab, % both for the user as for the hints system etc. - forall(rdf(Strategy, amalgame:includes, Vocab), + forall(strategy_vocabulary(Strategy, Vocab), ( voc_property(Vocab, totalCount(_)) -> ( setting(amalgame:precompute, true) -> precompute_node(Strategy, Vocab) diff --git a/applications/startpage.pl b/applications/startpage.pl index a2dfeca..ef6687b 100644 --- a/applications/startpage.pl +++ b/applications/startpage.pl @@ -10,6 +10,7 @@ :- use_module(library(yui3_beta)). :- use_module(library(amalgame/util)). +:- use_module(library(amalgame/ag_strategy)). :- use_module(applications(skos_browser)). :- use_module(components(amalgame/startpage)). @@ -37,7 +38,7 @@ html_schemes_only --> html_new(ConceptSchemes). html_main_page(_Request) :- - findall(A-S, amalgame_strategy_schemes(A, S), StrategySchemePairs), + findall(A-S, strategy_vocabularies(A, S), StrategySchemePairs), amalgame_alignable_schemes(ConceptSchemes), reply_html_page(cliopatria(main), [ title(['Amalgame - strategies']) diff --git a/lib/ag_modules/ancestor_generator.pl b/lib/ag_modules/ancestor_generator.pl index 46ced69..c9dbb19 100644 --- a/lib/ag_modules/ancestor_generator.pl +++ b/lib/ag_modules/ancestor_generator.pl @@ -1,6 +1,7 @@ :- module(ancestor_generator, []). +:- use_module(library(amalgame/ag_strategy)). :- use_module(ancestor_match). :- use_module(generator_snd_input). diff --git a/lib/ag_modules/compound_label_generator.pl b/lib/ag_modules/compound_label_generator.pl index 767e549..d2b87a3 100644 --- a/lib/ag_modules/compound_label_generator.pl +++ b/lib/ag_modules/compound_label_generator.pl @@ -3,6 +3,7 @@ :- use_module(library(semweb/rdf_db)). :- use_module(library(amalgame/vocabulary)). +:- use_module(library(amalgame/ag_strategy)). :- use_module(string_match_util). :- use_module(compound_label_match). diff --git a/lib/ag_modules/compound_label_selecter.pl b/lib/ag_modules/compound_label_selecter.pl index d4ce0f0..726f6d8 100644 --- a/lib/ag_modules/compound_label_selecter.pl +++ b/lib/ag_modules/compound_label_selecter.pl @@ -5,6 +5,7 @@ :- public selecter/5. :- public parameter/4. +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(semweb/rdf_db)). :- use_module(label_selecter). :- use_module(compound_label_match). diff --git a/lib/ag_modules/exact_label_generator.pl b/lib/ag_modules/exact_label_generator.pl index 8ab58b9..4168cff 100644 --- a/lib/ag_modules/exact_label_generator.pl +++ b/lib/ag_modules/exact_label_generator.pl @@ -2,6 +2,8 @@ :- use_module(library(semweb/rdf_db)). :- use_module(library(amalgame/vocabulary)). +:- use_module(library(amalgame/ag_strategy)). + :- use_module(exact_label_match). :- use_module(string_match_util). diff --git a/lib/ag_modules/exact_label_selecter.pl b/lib/ag_modules/exact_label_selecter.pl index 54b3a1d..155e154 100644 --- a/lib/ag_modules/exact_label_selecter.pl +++ b/lib/ag_modules/exact_label_selecter.pl @@ -5,6 +5,7 @@ :- public selecter/5. :- public parameter/4. +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(semweb/rdf_db)). :- use_module(label_selecter). :- use_module(exact_label_match). diff --git a/lib/ag_modules/isub_generator.pl b/lib/ag_modules/isub_generator.pl index c0814e3..1c336bc 100644 --- a/lib/ag_modules/isub_generator.pl +++ b/lib/ag_modules/isub_generator.pl @@ -3,6 +3,8 @@ :- use_module(library(semweb/rdf_db)). :- use_module(library(amalgame/vocabulary)). +:- use_module(library(amalgame/ag_strategy)). + :- use_module(isub_match). :- use_module(string_match_util). diff --git a/lib/ag_modules/isub_selecter.pl b/lib/ag_modules/isub_selecter.pl index 903a77e..b02ee08 100644 --- a/lib/ag_modules/isub_selecter.pl +++ b/lib/ag_modules/isub_selecter.pl @@ -5,6 +5,7 @@ :- public selecter/5. :- public parameter/4. +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(semweb/rdf_db)). :- use_module(label_selecter). :- use_module(string_match_util). diff --git a/lib/ag_modules/snowball_label_generator.pl b/lib/ag_modules/snowball_label_generator.pl index d842215..4516f53 100644 --- a/lib/ag_modules/snowball_label_generator.pl +++ b/lib/ag_modules/snowball_label_generator.pl @@ -4,6 +4,8 @@ :- use_module(library(semweb/rdf_db)). :- use_module(library(snowball)). :- use_module(library(amalgame/vocabulary)). +:- use_module(library(amalgame/ag_strategy)). + :- use_module(string_match_util). :- use_module(snowball_label_match). diff --git a/lib/ag_modules/snowball_label_selecter.pl b/lib/ag_modules/snowball_label_selecter.pl index 324b505..3e5a938 100644 --- a/lib/ag_modules/snowball_label_selecter.pl +++ b/lib/ag_modules/snowball_label_selecter.pl @@ -1,6 +1,7 @@ :- module(snowball_label_selecter, []). +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(semweb/rdf_db)). :- use_module(library(snowball)). :- use_module(string_match_util). diff --git a/lib/ag_modules/string_match_util.pl b/lib/ag_modules/string_match_util.pl index 30e183d..2e47a74 100644 --- a/lib/ag_modules/string_match_util.pl +++ b/lib/ag_modules/string_match_util.pl @@ -1,16 +1,13 @@ :- module(ag_string_match_util, [label_list/1, skos_match/5, - matching_types/2, - strategy_languages/2 + matching_types/2 ]). :- use_module(library(semweb/rdf_db)). :- use_module(library(semweb/rdfs)). :- use_module(library(semweb/rdf_label)). -:- use_module(library(amalgame/voc_stats)). - %% labels_list(-L) is det. % % L is a sorted list of portrayed label options @@ -84,12 +81,3 @@ matching_types(S1, S2) :- ; true) ,!. - -strategy_languages(Strategy, Languages) :- - findall(Voc, rdf_has(Strategy, amalgame:includes, Voc), Vocs), - maplist(lang_used, Vocs, Langs), - append(Langs, Languages0), - sort(Languages0, Languages). - -lang_used(Voc, Langs) :- - voc_property(Voc, languages(Langs)). diff --git a/lib/amalgame/ag_stats.pl b/lib/amalgame/ag_stats.pl index eae2756..1779640 100644 --- a/lib/amalgame/ag_stats.pl +++ b/lib/amalgame/ag_stats.pl @@ -9,6 +9,7 @@ :- use_module(library(skos/util)). +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(amalgame/expand_graph)). :- use_module(library(amalgame/caching)). :- use_module(library(amalgame/vocabulary)). @@ -142,7 +143,7 @@ has_mapping_input(URL, Strategy, Input) :- rdfs_individual_of(Input, amalgame:'Mapping'). -%% mapping_vocab_sources(+MappingURI, Strategy, -Source, -Target) +%% mapping_vocab_sources(+MappingURI, +Strategy, -Source, -Target) % % Source and Target are the recursive source and target % vocabularies of Mapping. @@ -153,9 +154,9 @@ mapping_vocab_sources(Manual, Strategy, SV, TV) :- ), !, has_correspondence_chk(align(SC,TC,_), Manual), - rdf_has(Strategy, amalgame:includes, SV), + strategy_vocabulary(Strategy, SV), vocab_member(SC, scheme(SV)), - rdf_has(Strategy, amalgame:includes, TV), + strategy_vocabulary(Strategy, TV), vocab_member(TC, scheme(TV)). mapping_vocab_sources(URL, Strategy, S, T) :- diff --git a/lib/amalgame/ag_strategy.pl b/lib/amalgame/ag_strategy.pl index 68ba384..9a3af46 100644 --- a/lib/amalgame/ag_strategy.pl +++ b/lib/amalgame/ag_strategy.pl @@ -1,9 +1,16 @@ :- module(ag_strategy, - [ strategy_process_entity/3, - strategy_new_process/9, - strategy_update_process_parameters/4, - strategy_update_node/3, - strategy_delete_node/2, + [ % get information about a strategy: + strategy_process_entity/3, + strategy_vocabulary/2, + strategy_vocabularies/2, + strategy_languages/2, + + % change strategy + strategy_new_process/9, + strategy_update_process_parameters/4, + strategy_update_node/3, + strategy_delete_node/2, + strategy_add_vocabulary/2, assert_output/6 % used in strategy_backward_compatability.pl ]). @@ -17,9 +24,12 @@ :- use_module(library(amalgame/util)). :- use_module(library(amalgame/map)). :- use_module(library(amalgame/ag_provenance)). +:- use_module(library(amalgame/voc_stats)). + :- rdf_meta strategy_process_entity(r,r,r), + strategy_vocabulary(r,r), strategy_delete_node(r,r), strategy_update_node(r,+,r), strategy_update_process_parameters(r,r,+,+), @@ -28,10 +38,53 @@ output_type(r,r), process_entity(r,r,r). +%% strategy_process_entity(?Strategy, ?Process, ?Entity) is nondet. +% +% True if Entity is generated by Process in Strategy. + strategy_process_entity(Strategy, Process,Entity) :- rdf_has(Entity, amalgame:wasGeneratedBy, Process, RealProperty), rdf(Entity, RealProperty, Process, Strategy). +%% strategy_vocabulary(?Strategy, ?Vocabulary) is nondet. +% +% True if Vocabulary is included in Strategy. +% + +strategy_vocabulary(Strategy, Vocabulary) :- + rdf_has(Strategy, amalgame:includes, Vocabulary). + +%% strategy_vocabularies(?Strategy, ?Schemes) is nondet. +% +% Strategy is an amalgame alignment strategy and Schemes are the +% conceptSchemes that it includes. + +strategy_vocabularies(Strategy, Schemes) :- + rdfs_individual_of(Strategy, amalgame:'AlignmentStrategy'), + findall(S, strategy_vocabulary(Strategy, S), Schemes), + Schemes \== []. + +%% strategy_languages(+Strategy, -Languages) is det. +% +% Languages is a list of language codes used in the vocabularies +% of Strategy. + +strategy_languages(Strategy, Languages) :- + strategy_vocabularies(Strategy, Vocs), + maplist(lang_used, Vocs, Langs), + append(Langs, Languages0), + sort(Languages0, Languages). + +lang_used(Voc, Langs) :- + voc_property(Voc, languages(Langs)). + +%% strategy_add_vocabulary(+Strategy, +Vocabulary) is det. +% +% Adds Vocabulary as an included scheme in Strategy. + +strategy_add_vocabulary(Strategy, Vocabulary) :- + rdf_assert(Strategy, amalgame:includes, Vocabulary, Strategy). + %% new_process(+Process, +Strategy, +Source, +Target, +Input, %% +SecInputs, +Params, -NewFocus) % diff --git a/lib/amalgame/json_util.pl b/lib/amalgame/json_util.pl index 72901a2..9160765 100644 --- a/lib/amalgame/json_util.pl +++ b/lib/amalgame/json_util.pl @@ -4,12 +4,12 @@ js_strategy_nodes/2 ]). -:- use_module(library(http/json)). :- use_module(library(semweb/rdf_db)). :- use_module(library(semweb/rdfs)). :- use_module(library(semweb/rdf_label)). :- use_module(cliopatria(components/label)). +:- use_module(library(amalgame/ag_strategy)). :- use_module(library(amalgame/ag_stats)). :- use_module(library(amalgame/map)). :- use_module(library(amalgame/ag_stats)). @@ -73,19 +73,6 @@ js_strategy_nodes(Strategy, Nodes) :- maplist(node_data(Strategy), URIsUnique, Pairs), dict_pairs(Nodes, nodes, Pairs). -atomify_pairs([], []). -atomify_pairs([K-Vs|Ts], [K-Va|Ta]) :- - atom_string(Va,Vs),!, - atomify_pairs(Ts, Ta). -atomify_pairs([K-V|Ts], [K-V|Ta]) :- - atomify_pairs(Ts, Ta). - -atomify_dict(S,D) :- - dict_pairs(S, T, SPairs), - atomify_pairs(SPairs, APairs), - dict_pairs(D, T, APairs). - - amalgame_strategy_mappings(Strategy, Mappings, Options) :- rdfs_individual_of(Strategy, amalgame:'AlignmentStrategy'), findall(URI, (rdf(URI, rdf:type, _ ,Strategy), @@ -114,7 +101,7 @@ graph_resource(Graph, R) :- graph_resource(Graph, R) :- rdf(_,amalgame:target,R,Graph). graph_resource(Graph, R) :- - rdf(Graph, amalgame:includes, R). + strategy_vocabulary(Graph, R). node_data(Strategy, R, R-Props) :- findall(Type-Value, node_prop(Strategy, R, Type, Value), Pairs), diff --git a/lib/amalgame/util.pl b/lib/amalgame/util.pl index c6b1255..102f21f 100644 --- a/lib/amalgame/util.pl +++ b/lib/amalgame/util.pl @@ -1,6 +1,5 @@ :- module(ag_utils, [ mint_node_uri/3, - amalgame_strategy_schemes/2, amalgame_alignable_schemes/1, assert_user_provenance/2, @@ -17,7 +16,6 @@ :- use_module(library(semweb/rdf_db)). -:- use_module(library(semweb/rdfs)). :- use_module(user(user_db)). :- use_module(library(amalgame/voc_stats)). :- use_module(library(amalgame/rdf_util)). @@ -86,15 +84,7 @@ assert_user_provenance(R, Graph) :- rdf_assert(R, dcterms:date, literal(type(xsd:dateTime, Time)), Graph). -%% amalgame_strategy_schemes(?Strategy, ?Schemes) -% -% Strategy is an amalgame alignment strategy and Schemes are the -% conceptSchemes that it includes. -amalgame_strategy_schemes(Strategy, Schemes) :- - rdfs_individual_of(Strategy, amalgame:'AlignmentStrategy'), - findall(S, rdf(Strategy, amalgame:includes, S), Schemes), - Schemes \== [].