General comments:
much improved over the version before James' edits!
1.
I like the distinction:
- constraints that define validity, and
- inferences that express necessary conditions (if - then) and can be generative.
- definitions,
which is now crisp (to me): constraints do not add new provenance facts, inference rules (incl. definitions) do (please correct if my understanding is wrong).
Indeed one problem we had was that the uniqueness constraint for example was stated in terms of inference, i.e.
wasGeneratedBy(e,a1) and wasGeneratedBy(e,a2) => a1 = a2.
I am very pleased to see that it's gone away now.
2.
Is this an additional useful distinction?
- deductive rules: no new data is created. ex.: closure over a transitive relation
- generative rules:: new data is created. Ex.: new IDs for elements that are known to exist although they are not asserted in the provenance instance
this has a bearing on implementations of rules based on a deductive model, for example, which does not generate new assertions.
for instance hte attribution-implication inference would not be implemented (in general, unless you make up new information for the relations that you infer, these rules are not safe).
3.
I am blissfully ignorant of logic terminology, but is "entailment" essentially equivalent to "inference" here?
---
More specific comments:
- 1.2: possibly reordering expressions -> I don't think there is an order to expressions? I always viewed it as a set (in fact, as an extensional DB)
- sec 2 Def. of definition:
defined_exp holds IF AND ONLY IF there exists a_1,..., a_m such that defining_exp_1 ... defining_exp_
should we clarify that the consequent are a conjunction? i.e., when used as a sufficient condition to derive defined_exp, all of the defining_exp_i must hold.
- 2.1: I have always been confused by the overloading of wasStartedBy, and wasStartedBy-definition reinforces that (unless this is a mistake that has alreasdy been spotted?) the different signature of wasStartedBy forces me to go and check definiitions, and then convince myself that it makes sense?
- 2.2. "@@TODO: Could this be an inference? Does it imply that a1 is associated with all activities a2 is associated with?"
I don't think so. Delegation should be on a per activity basis, right?
- 2.3 "A revision needs to satisfy the following constraint"
should be inference? so it's not "satisfy", either.
- 2.4 I think spec-transitive escapes the clean model I praise at the beginning :-)
"For any entities e1, e2, IF specializationOf(e1,e2) and specializationOf(e2,e1) THEN e1 = e2."
I think this can only be expressed as a constraint, because e1=e2 is undefined...
so: specializationOf(e1,e2) and specializationOf(e2,e1) where e1 != e2 is invalid.