import 'http://www.org.eclipse/ocl/examples/library/extlibrary.ecore/1.0.0' package extlibrary context Library -- get all books with a title in a library and its branches (recursively) def: getBooks(title : String) : Set(Book) = books->select(b | b.title = title)->asSet()->union( branches.getBooks(title)->asSet()) context Book -- the library containing a book def: library : Library = Library.allInstances()->any(books->includes(self)) -- book titles are unique within their library branch (and its sub-branches) inv unique_title: not library.oclIsUndefined() implies library.getBooks(title) = Set{self} endpackage