accurator/commit
Also exporting blanc nodes, targets and selectors.
author | Chris Dijkshoorn |
---|---|
Thu Apr 28 21:43:30 2016 +0200 | |
committer | Chris Dijkshoorn |
Thu Apr 28 21:43:30 2016 +0200 | |
commit | dca11ab4d5b1c0c5ca59249f9f3a720d70b65e67 |
tree | 50f43804b07bff30dbc5e517e4cbb243cfccddfc |
parent | e24c82a6d65ef98f0f1b2b15125c0cf5dd66a7d1 |
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).