accurator/commit

Also exporting blanc nodes, targets and selectors.

authorChris Dijkshoorn
Thu Apr 28 21:43:30 2016 +0200
committerChris Dijkshoorn
Thu Apr 28 21:43:30 2016 +0200
commitdca11ab4d5b1c0c5ca59249f9f3a720d70b65e67
tree50f43804b07bff30dbc5e517e4cbb243cfccddfc
parente24c82a6d65ef98f0f1b2b15125c0cf5dd66a7d1
Diff style: patch stat
diff --git a/lib/accurator/review.pl b/lib/accurator/review.pl
index 8810c92..547a43c 100644
--- a/lib/accurator/review.pl
+++ b/lib/accurator/review.pl
@@ -98,15 +98,54 @@ export_annotations(Graph, Annotations) :-
 	maplist(add_annotation(Graph), Annotations),
 	rdf_save_turtle(Graph, [graph(Graph)]).
 
+%%	add_annotation(Graph, Annotation)
+%
+%	Assert triples in Graph describing Annotation
+add_annotation(Graph, Annotation) :-
+	rdf(Annotation, oa:hasBody, TextNode),
+	rdf_is_bnode(TextNode), !,
+	% get all triples related to text annotation
+	findall(triple(TextNode, Predicate, Object),
+			rdf(TextNode, Predicate, Object),
+			TextTriples),
+	findall(triple(Annotation, Predicate, Object),
+			rdf(Annotation, Predicate, Object),
+			AnnotationTriples),
+	get_target(Annotation, TargetTriples),
+	append([AnnotationTriples, TextTriples, TargetTriples], Triples),
+	maplist(assert_tiple(Graph), Triples),
+	length(AnnotationTriples, NumberTriples),
+	format('Added ~p triples to ~p~n', [NumberTriples, Graph]).
+
 add_annotation(Graph, Annotation) :-
 	% get all triples related to annotation
 	findall(triple(Annotation, Predicate, Object),
 			rdf(Annotation, Predicate, Object),
 			AnnotationTriples),
-	maplist(assert_tiple(Graph), AnnotationTriples),
+	get_target(Annotation, TargetTriples),
+	append([AnnotationTriples, TargetTriples], Triples),
+	maplist(assert_tiple(Graph), Triples),
 	length(AnnotationTriples, NumberTriples),
 	format('Added ~p triples to ~p~n', [NumberTriples, Graph]).
 
+%%	get_target(+Annotation, -SelectorTriples)
+%
+%	For a given annotation get a list of triples describing the
+%	selector.
+get_target(Annotation, Triples) :-
+	rdf(Annotation, oa:hasTarget, Target),
+	rdf(Target, rdf:type, oa:'SpecificResource'), !,
+	findall(triple(Target, Predicate, Object),
+			rdf(Target, Predicate, Object),
+			TargetTriples),
+	% get selector triples
+	rdf(Target, oa:hasSelector, Selector),
+	findall(triple(Selector, Predicate, Object),
+			rdf(Selector, Predicate, Object),
+			SelectorTriples),
+	append(TargetTriples, SelectorTriples, Triples).
+get_target(_Annotation, []).
+
 assert_tiple(Graph, triple(Subject, Predicate, Object)) :-
 	rdf_assert(Subject, Predicate, Object, Graph).