amalgame/commit

FIXED: restore overall edoal alignment triples whe saving as EDOAL

authorJacco van Ossenbruggen
Mon Apr 6 14:38:28 2020 +0200
committerJacco van Ossenbruggen
Mon Apr 6 14:38:28 2020 +0200
commitc3bbc34bc8dc8665745c6197d74db3c732348065
tree405a6c3963cb34890c13a6a6e66c60e15895f011
parent17f944e76733b652e7bff7412acad0aac84b07b4
Diff style: patch stat
diff --git a/lib/amalgame/ag_publish.pl b/lib/amalgame/ag_publish.pl
index 0c0ff5c..4f88186 100644
--- a/lib/amalgame/ag_publish.pl
+++ b/lib/amalgame/ag_publish.pl
@@ -162,7 +162,7 @@ prepare_mapping(Id, Strategy, Options) :-
 	    (	Mapping = [_|_]
 	    ->	default_mapping_relation(Id, Default, Options),
 		augment_relations(Strategy, Mapping, Augmented, [default_relation(Default)]),
-		materialize_mapping_graph(Augmented, [graph(Id) | Options])
+		materialize_mapping_graph(Strategy, Augmented, [graph(Id) | Options])
 	    ;	true % empty mapping, do nothing
 	    )
 	;   true % already materialized in a previous run, do nothing
diff --git a/lib/amalgame/ag_stats.pl b/lib/amalgame/ag_stats.pl
index 19b4b9c..12d9d0e 100644
--- a/lib/amalgame/ag_stats.pl
+++ b/lib/amalgame/ag_stats.pl
@@ -14,7 +14,6 @@
 
 :- use_module(library(stat_lists)).
 
-:- use_module(library(amalgame/ag_strategy)).
 :- use_module(library(amalgame/expand_graph)).
 :- use_module(library(amalgame/scheme_stats)).
 :- use_module(library(amalgame/caching)).
@@ -202,53 +201,6 @@ has_mapping_input(URL, Strategy, Input) :-
 	rdf_has(Process, amalgame:input, Input),
 	rdfs_individual_of(Input, amalgame:'Mapping').
 
-
-%%	mapping_vocab_sources(+MappingURI, +Strategy, -Source, -Target)
-%
-%	Source and Target are the recursive source and target
-%	vocabularies of Mapping.
-
-mapping_vocab_sources(Manual, Strategy, SV, TV) :-
-	(   rdf_has(Manual, amalgame:evaluationOf, Strategy)
-	;   rdfs_individual_of(Manual, amalgame:'LoadedMapping')
-	),
-	!,
-	has_correspondence_chk(align(SC,TC,_), Manual),
-        have_vocab_sources(SC, TC, SV, TV).
-
-mapping_vocab_sources(URL, Strategy, S, T) :-
-	rdf_has(URL, amalgame:wasGeneratedBy, Process, RealProp),
-	rdf(URL, RealProp, Process, Strategy),
-	!,
-	(   rdf(Process, amalgame:source, S0, Strategy),
-	    rdf(Process, amalgame:target, T0, Strategy)
-	->  vocab_source(S0, Strategy, S),
-	    vocab_source(T0, Strategy, T)
-	;   rdf(Process, amalgame:input, Input, Strategy)
-	->  mapping_vocab_sources(Input, Strategy, S, T)
-	).
-
-have_vocab_sources(SourceConcept, TargetConcept, SVoc, TVoc) :-
-	strategy_vocabulary(Strategy, SVoc),
-	vocab_member(SourceConcept, scheme(SVoc)),
-	strategy_vocabulary(Strategy, TVoc),
-	vocab_member(TargetConcept, scheme(TVoc)),
-	!.
-
-have_vocab_sources(_S,_T, undef, undef) :-
-	!.
-
-
-vocab_source(V, Strategy, S) :-
-	rdf_has(V, amalgame:wasGeneratedBy, Process, RealProp1),
-	rdf(V, RealProp1, Process, Strategy),
-	rdf_has(Process, amalgame:input, Input, RealProp2),
-	rdf(Process, RealProp2, Input, Strategy),
-	!,
-	vocab_source(Input, Strategy, S).
-vocab_source(V, _S, V).
-
-
 compute_reference_counts(Id, Strategy, RefStats) :-
 	reference_mappings(Strategy, References),
 	expand_node(Strategy, Id, Mappings),
diff --git a/lib/amalgame/expand_graph.pl b/lib/amalgame/expand_graph.pl
index 449ce51..de322c7 100644
--- a/lib/amalgame/expand_graph.pl
+++ b/lib/amalgame/expand_graph.pl
@@ -262,7 +262,7 @@ materialize_results_if_needed(Strategy, Process, Results) :-
 		needs_materialization(Id, Process, Strategy)
 	    ),
 	    (   select_result_mapping(Id, Results, P, Mapping),
-		materialize(Id, Mapping)
+		materialize(Strategy, Id, Mapping)
 	    )
 	).
 
@@ -271,13 +271,13 @@ needs_materialization(_Id, Process, _Strategy) :-
 	rdf(ProcessType, amalgame:materialize, amalgame:always),
 	!.
 
-materialize(Id, Mapping) :-
+materialize(Strategy, Id, Mapping) :-
 	(   rdf_has(Id, amalgame:recordEvidence, amalgame:enabled)
 	->  Enabled = enabled
 	;   Enabled = disabled
 	),
 	% voc_clear_stats(all),
-	materialize_mapping_graph(Mapping, [graph(Id), evidence_graphs(Enabled)]).
+	materialize_mapping_graph(Strategy, Mapping, [graph(Id), evidence_graphs(Enabled)]).
 
 run_strategy :-
 	run_strategy(_).
diff --git a/lib/amalgame/mapping_graph.pl b/lib/amalgame/mapping_graph.pl
index 0b0e64a..9b5c38f 100644
--- a/lib/amalgame/mapping_graph.pl
+++ b/lib/amalgame/mapping_graph.pl
@@ -6,11 +6,11 @@
 	   map_nickname/3,             % +Strategy, +MappingGraph, ?Nickname
 	   map_localname/3,             % +Strategy, +MappingGraph, ?Localname
 	   nickname_clear_cache/0,
-
+	   mapping_vocab_sources/4,    % +MappingURI, +Strategy, -Source, -Target
 	   augment_relations/4,
 
 	   mapping_relation/2,
-	   materialize_mapping_graph/2, % +List, +Optios
+	   materialize_mapping_graph/3, % Strategy, +List, +Optios
 	   supported_map_relations/1, % ?URIList
 	   status_option/1
 	  ]
@@ -35,6 +35,8 @@ an rdf amed graph.
 :- use_module(library(amalgame/edoal)).
 :- use_module(library(amalgame/rdf_util)).
 :- use_module(library(amalgame/ag_reference)).
+:- use_module(library(amalgame/ag_strategy)).
+:- use_module(library(amalgame/vocabulary)).
 
 :- dynamic
 	nickname_cache/3.
@@ -235,15 +237,18 @@ prolog:message(map(found, What, From, Number)) -->
 
 %%      materialize_alignment_graph(+Mappings, +Options)
 %
-%       Assert Mappings as triples in the store.
+%       Assert Mappings as (EDOAL) triples in the store.
 
-materialize_mapping_graph(Input, Options) :-
+materialize_mapping_graph(Strategy, Input, Options) :-
         option(graph(Graph), Options, test),
+	mapping_vocab_sources(Graph, Strategy, SourceVocab, TargetVocab),
 
         (   rdf_graph(Graph)
         ->  rdf_unload_graph(Graph)
         ;   true
         ),
+
+	assert_alignment(Graph, [method(Strategy), ontology1(SourceVocab), ontology2(TargetVocab)|Options]),
         (   memberchk(align(_,_,_), Input)
         ->  mat_alignment_graph(Input, Options)
         ;   true
@@ -346,3 +351,49 @@ augment_relation(Mappings, Reference, NewResults, Options) :-
 	    NewRef = RTail
 	),
 	augment_relation(NewMappings ,NewRef, Results, Options).
+
+
+%%	mapping_vocab_sources(+MappingURI, +Strategy, -Source, -Target)
+%
+%	Source and Target are the recursive source and target
+%	vocabularies of Mapping.
+
+mapping_vocab_sources(Manual, Strategy, SV, TV) :-
+	(   rdf_has(Manual, amalgame:evaluationOf, Strategy)
+	;   rdfs_individual_of(Manual, amalgame:'LoadedMapping')
+	),
+	!,
+	has_correspondence_chk(align(SC,TC,_), Manual),
+        have_vocab_sources(SC, TC, SV, TV).
+
+mapping_vocab_sources(URL, Strategy, S, T) :-
+	rdf_has(URL, amalgame:wasGeneratedBy, Process, RealProp),
+	rdf(URL, RealProp, Process, Strategy),
+	!,
+	(   rdf(Process, amalgame:source, S0, Strategy),
+	    rdf(Process, amalgame:target, T0, Strategy)
+	->  vocab_source(S0, Strategy, S),
+	    vocab_source(T0, Strategy, T)
+	;   rdf(Process, amalgame:input, Input, Strategy)
+	->  mapping_vocab_sources(Input, Strategy, S, T)
+	).
+
+have_vocab_sources(SourceConcept, TargetConcept, SVoc, TVoc) :-
+	strategy_vocabulary(Strategy, SVoc),
+	vocab_member(SourceConcept, scheme(SVoc)),
+	strategy_vocabulary(Strategy, TVoc),
+	vocab_member(TargetConcept, scheme(TVoc)),
+	!.
+
+have_vocab_sources(_S,_T, undef, undef) :-
+	!.
+
+
+vocab_source(V, Strategy, S) :-
+	rdf_has(V, amalgame:wasGeneratedBy, Process, RealProp1),
+	rdf(V, RealProp1, Process, Strategy),
+	rdf_has(Process, amalgame:input, Input, RealProp2),
+	rdf(Process, RealProp2, Input, Strategy),
+	!,
+	vocab_source(Input, Strategy, S).
+vocab_source(V, _S, V).