accurator/commit

Added code for adding resources to conceptschemes, enabling autocompletion on those resource.

authorChris Dijkshoorn
Mon Mar 30 14:07:09 2015 +0100
committerChris Dijkshoorn
Mon Mar 30 14:07:09 2015 +0100
commitb611d8c77cb715f302825804b8b536b719c236e2
treef1bfb9c3e0042574e98e018f4a325287a8a1fa91
parent4e0befd7a62528156501e3208e7f07d1a53d1408
Diff style: patch stat
diff --git a/api/accurator.pl b/api/accurator.pl
index 0e7ef09..f0206f1 100644
--- a/api/accurator.pl
+++ b/api/accurator.pl
@@ -11,6 +11,7 @@
 :- use_module(library(accurator/recommendation/strategy_expertise)).
 :- use_module(library(accurator/ui_elements)).
 :- use_module(library(accurator/subset_selection)).
+:- use_module(library(accurator/concept_scheme_selection)).
 :- use_module(api(cluster_search)).
 :- use_module(library(semweb/rdf_db)).
 :- use_module(library(http/http_dispatch)).
diff --git a/lib/accurator/concept_scheme_selection.pl b/lib/accurator/concept_scheme_selection.pl
new file mode 100644
index 0000000..8f1e43a
--- /dev/null
+++ b/lib/accurator/concept_scheme_selection.pl
@@ -0,0 +1,40 @@
+:- module(concept_scheme_selection, [iconclass_code_concept_scheme/3]).
+
+/** <module> Concept scheme selection for auto completion
+*/
+:- use_module(library(semweb/rdf_db)).
+:- use_module(library(semweb/rdf_turtle_write)).
+
+%%	iconclass_code_concept_scheme(+Code, +ConceptScheme, +FileName)
+%
+%	Adds a subset of the iconclass codes to a concept scheme, so it can
+%	be loaded by autocomplete
+% iconclass_code_concept_scheme('http://iconclass.org/7','http://accurator.nl/bible#BiblicalThemeConceptScheme','concept_scheme_bible_theme.ttl').
+iconclass_code_concept_scheme(ICCode, ConceptScheme, FileName) :-
+	%find all works with class or sublcass of specified code
+	find_codes(ICCode, Codes),
+	save_concept_scheme(Codes, ConceptScheme, FileName).
+
+%%	find_codes(+ICCode, -Codes)
+%
+%	Retrieve all codes below ICCode
+find_codes(ICCode, Codes) :-
+	findall(Code,
+			rdf_reachable(Code, skos:broader, ICCode),
+			Codes),
+	length(Codes, NumberCodes),
+	debug(concept_scheme, 'Number of codes of ~p or lower: ~p',
+		  [ICCode, NumberCodes]).
+
+%%	save_concept_scheme(Uris, ConceptScheme, FileName)
+%
+%	Assert triples linking uris to conceptschemes and save these triples
+%	in a specified file.
+save_concept_scheme(Uris, ConceptScheme, FileName) :-
+    maplist(assert_concept_scheme(ConceptScheme), Uris),
+    rdf_save_turtle(FileName, [graph(ConceptScheme)]).
+
+assert_concept_scheme(ConceptScheme, Resource) :-
+	rdf_assert(Resource, skos:inScheme, ConceptScheme, ConceptScheme),
+    debug(concept_scheme, 'Asserted ~p to ~p',
+	   [Resource, ConceptScheme]).