0

I'm trying to represent the following real world situation:

  • "Document Alfred" contains the following annexes: "Document Zoey" as "Annex 1" and "Image 1" as "Annex 2"
  • "Document Betty" contains the following annexes: "Song Rocky" as "Annex A" and "Document Zoey" as "Annex B"

I expected this to be fairly straightforward, but instead I ended up in making a mess, even to the point of having:

  • A class "Document"
  • A class "AnnexionID"
  • An inverse functional object property "identifiesAnnexOf"
  • An inverse functional object property "identifiesAsAnnex"
  • Two inverse object properties for the latter two
  • An object property "hasAnnex", which is a subproperty of the transitive one "hasPart", plus its inverse property "isAnnexOf".

This looks over-complicated to me, but is it? I would expect this to be a typical design pattern. What is (are) the relevant best practices?

Joshua Taylor
  • 84,998
  • 9
  • 154
  • 353
AndreaB
  • 1
  • 2

0 Answers0