Warning:
This wiki has been archived and is now read-only.

Inverse properties discussion

From Provenance WG Wiki
Jump to: navigation, search

Inverse properties discussion

The latest inverses are listed at http://aquarius.tw.rpi.edu/prov-wg/inverse-names.html

Stian outlines naming approach here.

Prov:property Stian's name Proposed rename Comments


prov:atLocation prov:locationOf - Dani: +1
prov:alternateOf prov:alternateOf - Dani: +1
prov:specializationOf prov:generalizationOf - Dani: +1
prov:involved prov:wasInvolvedWith - Dani: +1 TL -1(no better proposal)
prov:tracedTo prov:tracedFrom - Dani: +1
prov:used prov:wasUsedBy - Dani: +1
prov:wasDerivedFrom prov:hadDerivation - Dani: +1
prov:hadOriginalSource prov:wasOriginalSourceOf - *Dani: +1: (why not just "originalSourceOf")?
  • Stian: To keep it as a verb in past tense. But perhaps this naming style is not so good in the inverse direction, which is pointing towards the future?
prov:wasQuotedFrom prov:wasQuotedBy quotedAs *Dani: ->+0. Other relationships using "By" denote agency. I suggest to rename it wasQuotedIn.
  • Oh no, this is a sensitive one for us two! The range of the inverse will be the quote entity (the paragraph), so you can't say "bible quoted in" - there is nothing more to be inside.

What about prov:quotedAs  ?

  • Dani: +1 for quotedAs
  • Tim: quotedAs seems good.
  • Stian: +1 quotedAs
prov:wasRevisionOf prov:hadRevision - Dani: +1
prov:wasEndedBy prov:ended - Dani: +1
prov:wasGeneratedBy prov:generated - Dani: +1
prov:generated prov:wasGeneratedBy - Dani: +1
prov:wasInformedBy prov:informed - Dani: +1
prov:wasInvalidatedBy prov:invalidated - Dani: +1
prov:wasStartedBy prov:started - Dani: +1
prov:wasAssociatedWith prov:wasAssociateFor - Dani: +1
prov:wasAttributedTo prov:contributed - Dani: +1
prov:actedOnBehalfOf prov:responsibleFor (TL)prov:hadDelegate Dani: +1 responsibleFor
  • Stian: +1 prov:hadDelegate (several in the office agreed on ":aBoss prov:hadDelegate :aSecretary" where the secretary could read the email for the boss)
prov:qualifiedAssociation prov:associatedActivity qualifiedAttributionOf Dani: +0
  • Stian: +1 prov:qualifiedAssociationOf
prov:qualifiedAttribution prov:attributedEntity prov:qualifiedAttributionOf Dani: +1
  • Stian: +1 prov:qualifiedAttributionOf
prov:qualifiedCommunication prov:informedActivity qualifiedCommunicationOf Dani: -1. It is very similar to wasInformedBy. I think that something like "qualifiedCommunicationOf" is better
  • Stian: +1 prov:qualifiedCommunicationOf
prov:qualifiedDerivation prov:derivedEntity qualifiedDerivationOf Dani: +0
prov:qualifiedEnd prov:endedActivity qualifiedEndOf Dani:I prefer qualifiedEndOf
prov:qualifiedGeneration prov:generatedEntity qualifiedGenerationOf Dani: I suggest qualifiedGenerationOf. "generated" and "generatedEntity" could lead to confussion.
prov:qualifiedInsertion prov:insertedToDictionary qualifiedQuotationOf Dani: -1. It could be confused with wasQuotedBy. I suggest to rename it qualifiedQuotationOf.
prov:qualifiedQuotation prov:quotedByEntity - Dani: +1
prov:qualifiedRemoval prov:removedFromDictionary qualifiedRemovalOf prov:qualifiedRemovalFrom Dani: +0. rename it to qualifiedRemovalOf
  • Stian: prov:qualifiedRemovalFrom (the dictionary was not removed!)
prov:qualifiedResponsibility prov:responsibleAgent qualifiedResponsabilityOf Dani: +0 I suggest qualifiedResponsabilityOf
prov:qualifiedRevision prov:revisedEntity qualifiedRevisionOf Dani: +1 I suggest qualifiedRevisionOf (to keep the same pattern)
prov:qualifiedSource prov:sourcingEntity qualifiedSourceOf Dani: +0 I suggest qualifiedSourceOf
prov:qualifiedStart prov:startedActivity qualifiedStartOf Dani: +0. I prefer qualifiedStartOf. It can be confused with "wasStartedBy"
prov:qualifiedTrace prov:tracedEntity qualifiedTraceOf Dani: +0. I suggest qualifiedTraceOf
prov:qualifiedUsage prov:consumingActivity cualifiedUsageOf *Dani: +0. I suggest cualifiedUsageOf.
  • Stian (also applicable for previous rows): I have no hard feelings about any of these. I removed the "qualified" prefix so that it would somewhat match up with the outgoing prov:activity/prov:entity/.... This will effectively point to the subject of the reified triple. I agree we should be consistent with the pattern. (My pattern was prov:.*(Activity|Entity|Agent) )

Just remember the direction. It will be for instance:

:e2 prov:wasDerivedFrom :e1 ;
   prov:qualifiedDeriation :e2Deriv .
:e2Deriv a prov:Derivation ; 
   prov:entity :e1 ;
   prov:derivedEntity :e2 .


So "qualifiedDerivationOf" would read wrong to me - because it is :e1 we derive from, not :e2. I also struggled in that these need to be specific per involvement type to be proper inverses of the specific qualified*, so you can't say have a general prov:qualifyingEntity.

  • Dani: my concern is that derivedEntity could be confused with other properties like "derived" (although domain and range would be different).

I don't think that "qualifiedDerivationOf" is wrong, since it it the qualified Derivation for e2. I don't see that implying that e2 is the source of the derivation.

prov:involvee prov:involvement - Dani: +1
prov:activity prov:activityInvolvement activityInvolvementOf activityOfInvolvement *Dani: +0.
  • Stian: no, not "of" - as whatever involvement will be the right hand side. The activity is not an activity-involvement of the involvement.
:assoc1 a prov:Association ;
   prov:activity :a1 .b
:a1 prov:activityInvolvement :assoc1 .
  • Dani: Ok, It is not an activity involvement. Then why not activityOfInvolvement
  • Stian: +1 activityOfInvolvement
prov:agent prov:agentInvolvement prov:agentInvolvementOf prov:agentOfInvolvement *Dani: +0.
  • Stian: same as prov:activity
  • Dani: what about agentOfInvolvement?
  • Stian: +1 agentOfInvolvement
prov:dictionary prov:dictionaryInvolvement prov:dictionaryInvolvementOf prov:dictionaryOfInvolvement *Dani: +1, but I suggest to add the "Of".
  • Stian: same response as prov:agent
  • Stian: +1 dictionaryOfInvolvement
prov:entity prov:entityInvolvement prov:entityInvolvementprov:entityOfInvolvement Dani-Stian: same.
  • Stian: +1 entityOfInvolvement
prov:hadActivity prov:wasActivityOfInvolvement - Dani: +1
prov:hadGeneration prov:generatedAsDerivation prov:generationByDerivation Stian: I see you did not vote on this - no wonder as it's a confusing property name! Any better suggestion? Remember it is the inverse pointing back to the prov:Derivation.


:e2 prov:qualifiedDerivation :deriv .
:deriv a prov:Derivation ;
 prov:entity :e1 ;
 prov:hadGeneration :e2Gen .
:e2 prov:qualifiedGeneration :e2Gen .
:e2Gen a prov:Generation ;
 prov:generatedAsDerivation :deriv .
  • Dani: I have no better suggestion :(
  • Stian: Propose prov:generationByDerivation
prov:hadPlan prov:wasPlanFor wasPlanOf *Dani: +1. *Stian:Yes, wasPlanOf is probably better, as the range will be to some Involvement
prov:hadRole prov:wasRoleIn - Dani: +1
prov:hadUsage prov:wasUsedInDerivation prov:usageOfDerivation *Dani: +1: Why not "usedInDerivation"?
  • Stian:This is the equivalent of prov:generatedAsDerivation above. I think I added 'was' to clarify the direction - the Usage did not "use". However you can argue the Generation did not "generate" either - so they


:e2 prov:qualifiedDerivation :deriv .
:deriv a prov:Derivation ;
 prov:entity :e1 ;
 prov:hadUsage :e1Usage .
:e1Usage a prov:Usage ;
 prov:entity :e1 ;
 prov:wasUsedInDerivation :deriv .


It is also a bit strange as to me it reads like :deriv is a prov:Activity rather than just some details about the derivation. But the real activity is just implied here.

  • Stian: Propose prov:usageOfDerivation instead to avoid the above problem. (But does this read like a derivation was used??)
prov:inserted prov:wasInsertedBy - Dani: +1
prov:derivedByInsertionFrom prov:hadDerivationByInsertion - Dani: +1
prov:derivedByRemovalFrom prov:hadDerivationByRemoval - Dani: +1
prov:pair prov:inMembership - Dani: +1
prov:qualifiedMembership prov:membershipOf prov:qualifiedMembershipOf Dani: +1
  • Stian: Added 'qualified' to match the other q*.
prov:hadMember - prov:wasMemberOf
prov:hasAnchor - prov:anchorOf Stian: No domain/range?
prov:hasProvenance - prov:provenanceOf Stian: No domain/range?
prov:hasProvenanceService - prov:provenanceServiceOf Stian: No domain/range?
prov:hadPrimarySource - -
prov:pairValue - Stian: +1 prov:valueOf