Until now, SWO had only one way of linking software to each other: via the defined class Software Suite, which has as its equivalent class has_part some software. This has the benefits of being straightforward and also quite useful for groupings of independent pieces of software. The main example of this is the Microsoft Office 2001 class, which is inferred to belong to Software Suite because it has many independent pieces of software (such as Microsoft Excel) linked to it with the has_part property.
However, what happens for software which utilises other pieces of software? A good working example is the ClustalW Web tool at the EBI. It is a piece of Clustal software and behind the scenes it uses the standard ClustalW binaries. It wouldn’t be ideal to use the has_part relationship as it isn’t really right to say that the EBI ClustalW Web tool is a software suite in the same way Microsoft Office is. In this case, one piece of software is actually using another piece of software. And such a usage would be helpful to model, as it allows us to ask questions of SWO such as “What pieces of software make use of ClustalW 2.1?”
The answer is to have an additional object property uses software whose domain and range are both software. In the simple cases (such as the Clustal example above) the use of this property on its own is enough (for now). However, this property could also be used to link plugins to their parent software. Robert’s examples of this include being able to say something like
‘Protege 4.1’ ‘uses software’ some (OntoGraph has_role some Plugin)
Such a combined usage of uses software and has_role would be useful for gathering together all plugins for a particular piece of software. Similar statements could be made for other software which allows plugin development such as Cytoscape.
As a result, both the object property uses software and the role Plugin have been added. Although as of today uses software is now actively used within SWO, I have yet to add a Plugin role to any software.