Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Status

This feedback is based on the version of FIBO BE & FND & FND that I got from David Newman on December 3, 2015. Some this may need to be updated.

Request for Clarification

Why is the class called TransactionEvent instead of Transaction? Is there such a thing as a transaction that cannot be said to have happened? Also, given 'event' has a special meaning in finance, if you are going to call this out, should it not be called TransactionOccurrence and be a subcalss of Occurrence, not OccurrenceKind (they do have dates)?

The FIBO FND team is planning to do some work here.  But, whatever the name, what is intended by TransactionEvent (which could be transaction activity or transaction kind, as an alternative) is a general class of activities – such as the class of activities that involve exercising an option on some number of shares of stock.  The actual occurrence of that transaction would be of type Occurrence, but would be associated with the transaction "activity" via the "exemplifies" property – the transaction activity is the generic thing, whereas the occurrence is an individual occurrence that involves time.  This corresponds to the PSL model of activities and occurrences, fyi.

Recommended Changes

Incorrect subclass relationships.  

pas:TransactionEvent is something that does in fact happen, e.g. withdrawing $100 from an ATM. There for it is NOT an OccurrenceKind, which is defined as a " type of event, which has a description". It does in fact have a Date, where OccurrenceKind specifically lacks a Date.

 

The actual withdrawl is an occurrence involving a transaction time and some monetary amount, where as the class of activities that are of type WithdrawlActivity is a subclass of OccurrenceKind following the PSL and DOLCE models.  See http://www.nist.gov/el/msid/psl.cfm for more on PSL.

ReFactoring Suggestions

Classes with names that are too general

...

Properties with too narrow domain and/or range

 

Recommended

...

Addition

  1. add hasName restriction to pas:Product
  2. add hasStartDate restriction to pas:Product that means when the product becaem available, create new subproperty only if needed.