Loom uses concept definitions to create a domain-specific language for expressing the elements of an event. This allows a concise, high-level description of an event.
Loom's query facility is used to locate sequences of images that satisfy the constraints of the event description. One such match, using images from the Radius Model Board 2 test set, is shown below:
The descriptor for a field training exercise looks like this:
(make-event :name 'field-training-exercise :case-roles '((armored-unit ?y)) :components '((:scene ?s1 ?y (in-garrison ?y)) (:scene ?s2 ?y (convoy ?y)) (:scene ?s3 ?y (deployed-unit ?y)) (:scene ?s4 ?y (convoy ?y))) :constraints '((before+ ?s1 ?s2) (before+ ?s2 ?s3) (before+ ?s3 ?s4))))
This template is then used to generate a Loom query that retrieves a list of images along with the group that participates in the sequence:
(retrieve (?S1 ?S2 ?S3 ?S4 ?Y) (and (within-context ?S1 (In-Garrison ?Y)) (within-context ?S2 (Convoy ?Y)) (within-context ?S3 (Deployed-Unit ?Y)) (within-context ?S4 (Convoy ?Y)) (before+ ?S1 ?S2) (before+ ?S2 ?S3) (before+ ?S3 ?S4))