...
ALTERNATIVE: A less disruptive (and hopefully temporary) option that can be implemented immediately is to use the suffixes as needed when creating a version that is not there. For example, I created a property called isProducedBy_I for what I needed above. Now it is clearly linked to the other version. All the ThingInRole classes like Bank and Asset can have their IndependentParty versions called Bank_I & Asset_I. I needed to have a new Class called CreditRepository, but I sure don't want the _R version. For now, given the current naming convention, I will create a class called CreditRepository_I and not bother creating the _R version since I cannot imagine a time when it would be needed.
This example points out something else. The definition tells us to only use the isProducedBy property when the property is acting in the producer role. In this case they are producing the credit report in their role as a credit reporting agency, not more norrowly as a producer. Experian might produce something else but not in their role as a CreditReportingAgency, this would require yet another role instance for Experian. Yet another reason to avoid mediating things whenver possible.
ReFactoring Suggestions
- Suggest move the hasName data property to the relations ontology. Many things that are not agents have names . Then there may be no need for relations ontology to be importing agents ontology. It seems a bit backwards.
- Suggest move identifies(isIdentifiedBy) properties to the relations ontology. Many things that are not agents have identifiers. Then the agents ontology can import the relations ontology, like most other ontologies do.
...