Software: An Ontology of Ontologies

In a previous post we considered our initial model for describing software and the components required. As we continue to collect requirements from the user community and being to test this model with some actual software descriptions two things have become clear.

Firstly, that the initial model is not adequate to capture all that is needed by the community. To some extent, this was inevitable as the initial model was precisely this; an initial prototype which we would build on. At least three other features of software have emerged as important to the curation and digital preservation community and we have expanded the model to also cover these, as seen in the figure highlighted in blue. These additional features are operating system on which the software can be executed, version information and licensing. We previously discussed some of these issues in blogs on versioning, licensing and operating systems.

Software Ontology showing Modules

Secondly, that a software ontology is made of potentially modular components which may usefully be separate ontologies. Each one of the boxes in red and the three new components in blue could potentially separated into individual ontologies each with a rich description of the area they model. There are some reasons we might consider this module approach to building the software ontology.

Firstly, a modular approach would facilitate reuse. Licenses, for instance, can apply to many domains such as literature publishing and images. Organizations may have many more functions than producing and publishing software. Data formats have an impact on almost all software and data, beyond the scope of the SWORD project.

Secondly, the approach enables concurrent editing. A lack of viable tooling for concurrent ontology editing in OWL makes working on a single OWL ontology file problematic; in this modular manner, separate files can be operated on and imported back together to integrate components.

Thirdly, that having a “core” set of classes in a single OWL file, representing just the “upper ontology of software”, that is the key structures under which other classes and individuals should be subclassed and composed, allows other ontology developers to develop under a similar framework without having to use the full SWO. This may be desirable for those working in other fields, such as business applications, real-time systems or even computer games.

We will be checking in the various files along with a read me into the SWO SourceForge repository.

About these ads
This entry was posted in methods, modeling, ontology. Bookmark the permalink.

6 Responses to Software: An Ontology of Ontologies

  1. Bill Duncan says:

    I was thinking about some other relationships (object properties):

    1. Do you know if all software comes with a version number? If some
    some do not, then perhaps something like “has_version_number” could be
    useful. This would simply be a “yes/no” indicator.

    2. Many kinds of software a specifically intended to be run on a
    particular operating system. So, perhaps a “runs_on_os” relation
    could be useful.

    3. Do we want to keep track of which compiler is used to compile the
    source code? Often, this information is not available, subtle
    differences in compilers may be important to keep track of. Also,
    along this line of thought, do we want to make a distinction between
    the source code of a program and the machine code?

    4. I think in BFO’s word, operating systems have to be a kind of
    software. For example, Linux is a GDC, and so is Microsoft Word.
    However, the purpose of an OS is to manage the resources (process)
    necessary for software applications to run. This I think gives an OS
    a distinctive role from most software applications. Do we to try to
    capture this in an ontology of OS’s?

  2. James says:


    1. not all but some i think. I’m always a little wary of making negative statements like has no version unless it is absolutely true. There are a few tricks we might use though to capture this.

    2. Not sure we need specific relation but might be useful.

    3. In some cases yes and we had few competence questions of this ilk drop out from workshop actually.

    4. I think we agree here though perhaps not about being a role of software since most OSs are designed to be such. But it is software yes i think so just software with some knowledge of how applications can use hardware it sits between.

  3. Bill Duncan says:

    More Questions/Comments:
    1. Software is_developed_by software developer organizations does not seem quite right. I think it might be better to say that software is developed by one or more software developers. The software developers are, then, part of a software organization. The software organization owns/licenses the software. For example, Microsoft Word is not strictly speaking developed/maintained by Microsoft. Microsoft is a cooperation, and cannot write code. When we say that Microsoft developed Microsoft Word we are speaking loosely.
    2. I disagree that software has_part algorithm. Algorithms are abstract objects. I think it is better to say that a computer program implements one or more algorithms.
    3. Are the edges between software, license, operating system, and version intentionally left blank, or is the edge supposed to labeled “has_part”. If the intent is the latter (i.e., “has_part”) I do not think this is correct for the following reasons:
    a. Licenses are issued by organizations, and are not necessarily part of some software.
    b. I think that operating systems are a type of software, and not a part of software.
    c. The version number I think is not necessarily part of software. I think of software as some set of instructions written in some programming language and consisting in some media. This of course raises the issue of what a version number is. One thought is that a version number is a property of the software. But this raises problems for BFO, for BFO does not allow dependent entities to bear other entities. I think the work around to this problem may be to recognize that when we refer to some piece of software, are often speaking loosely and we allow the context of the discussion to help fill in the details. For example, if I tell you that I have Adobe Acrobat loaded on my computer, I am implicitly referring to Adobe Acrobat version x.x.x.
    4. I agree that an organization is a material entity. However, it might be necessary to recognize that many organizations are aggregates of a number of scattered material entities. For example, IBM is an aggregate of many material entities located in many different places.
    5. I am not sure what is meant by software a kind of information. What sense of information are you using?

  4. jrmalone says:

    Hi Bill,

    In order:

    1. In the model software is developed by either an individual that designs and implements code or an organisation which has members that do the same. The role of software developer can be borne by either.

    2. Indeed perhaps so. The relations on this model are provisional. This may be the best relationship.

    3. All of these are left blank intentionally as the relationships have not been specified yet. They are not meant to be implicitly “has_part” as I agree this is prob wrong. is about is something we are considering for version. Licenses are think may well be issued_by organisations but once placed on a piece of software then their is a relationship between the two, is_about may again be all we need to say.

    4. We will likely use the relationship has_grain I think, and not the class aggregate of scattered material entity.

    5. information is a statement about some entity

  5. Pingback: Software: An Ontology of Ontologies (via SWORD) « Minimalist way

  6. Pingback: Populating the ontology « SWOP

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s