Is `repository` being used properly?
I suspect I'm just confused, but looking at things like the TermForm, it allows repository to be, e.g., TermFactory instead of an RDF::Marmotta instance. This makes calls to #exists? very different if you're using a form object vs. what GraphToTerms returns. From the injector, tracing through the stack determines that calling term_form.repository.exists? calls TermFactory, which calls Term, which eventually hits our active triples adapter. But calling term_form.__getobj__.repository.exists? doesn't work, as RDF::Marmotta is the Term object's repository, and it has no exists? method.
Should we be calling exists? on the repository? Or should we make something smarter for existence check that use the Term/Vocabulary class instead?
Hmm, we can't dynamically use the class, as sometimes that's TermWithChildren, which has no existence check. I suspect that wouldn't be the only place it would bite us.
:+1: Awesome catch. TermForm's violating Liskov Substitution. We can either make the configured repository respond to #find/#new/#exists or find a new method for the validator to use, I think