@prefix e: . @prefix list: . @prefix log: . @prefix kb: . @prefix string: . @prefix tln: . # merge images if they share a common filename and have two different pages on them. { ?manuscript a tln:ArchivalManuscriptUnity; tln:hasPages ?pages. ?page_a list:in ?pages; tln:hasImage ?image_a. ?page_b list:in ?pages; tln:hasImage ?image_b. (?before (?page_a) ?middle (?page_b) ?after) list:append ?pages. # asymmetric condition: page_a before page_b # we keep image_a and get rid of image_b. ?image_a tln:hasFileName ?file_name; tln:hasTextField ?text_field_a. ?image_b tln:hasFileName ?file_name; tln:hasTextField ?text_field_b. ?image_a log:notEqualTo ?image_b. ?image_b ?p ?o. ?page_b ?has ?image_b. } => { ?image_a ?p ?o. ?page_b ?has ?image_a. _:d kb:retract (?image_b ?p ?o). _:d kb:retract (?page_b ?has ?image_b). }.