We had a discussion on Slack about the Report object yesterday and I wanted to summarize for those of you who don’t want to read a 500msg back and forth. The people involved were myself, Bret Jordan, Jason Keirstead, Mark Davidson, Rich Piazza,
John Mark-Gurney, and Sean Barnum.
The topic of discussion was how you relate objects to a report, and there were essentially four options that were discussed:
1. The report contains just a title, description, and other TLO properties. Content is placed in the report through the use of relationships with a FROM of the report, a TO of the TLO, and a kind_of_relationship=“contains"
2. The report contains a title, description, other TLO properties, and a list of idrefs for the content that the producer says are “in” the report.
3. A hybrid approach where the report contains the same items as #2, but the idrefs point to the relationships from #1.
4. A further hybrid where the report idrefs point to EITHER content as in #2 or relationships as in #3.
#3 and #4 are mainly compromise positions if you like #1 or #2 but are OK with something more optional/flexible.
By the end of the conversation most of the group was gravitating towards #2, including myself. The reasons for this are that we felt:
- The report and the references to the content it contains can be signed as a single TLO, verifying that it is what we think it is
- Changes to what’s in the report are versioned with the report itself
- Only the original producer of the report indicates what’s in it, having other people indicate what’s in it is not an important use case (they can just issue their own report)
- There’s not a strong desire to represent how something is in a report (relationship nature or value field) or the confidence that something is in a report
- #3 in particular has a lot of double-booking, it’s redundant to represent that the information is contained in the report twice
On the other hand, one or more people also felt that #1 was the right approach, because they felt that:
- Signatures and versioning are just as doable in #1
- Having other people indicate things are in the report is a use case, and in any case even if it isn’t you can tell what the producer is asserting by looking at their sources
- Reports may evolve over time and relationships enable
- That objects should “belong” to the report with some level of confidence
- It might be important to say how content is in a report via kind_of_relationship (or, if not, it’s not harmful)
- It’s one way of doing things to have all references between TLOs happen via a relationship object
What do you think about this? Which of those options do you prefer? Let’s try to get some consensus on this so we can push it into the draft specs and close it.