Recently we noticed that version information was stored as instance data of the ‘version name or number’ class. A few of us asked each other what the gain was in having instance data rather than simple string values on the right-hand side of a data property. We couldn’t come up with a reason and, with a view to modifying the ontology, we sent a mail around to the SWO mailing list to see if anyone could tell us why versions were modelled in this way.
After Duncan had a word with Andy, it turned out they were modelled as instances so that the properties ‘preceded by’ and ‘followed by’ could be used to link versioning in a simple ordered list. As such, we decided to retain the versioning as it currently stands in SWO, with a number of slight improvements. These improvements are as follows:
- An inverse property is version of has been added.
- The range of has version has become version name or number. The inverse is true for is version of.
- Domain and range of both preceded by and followed by have been updated to be version name or number.
The following axiom has been added to domain name or number: 'is version of' only ('programming language' or algorithm or 'data format specification' or software or 'Software license')
The important thing to remember about using the version instances is not to reuse them in any software other than the one they were intended for. This is the main reason we were thinking of converting them to strings with data properties linking them to the software. Just because two pieces of software identify themselves as having version “1.0” does not mean that they subscribe to the same versioning scheme, or that their versions are somehow equivalent.