In bodies of knowledge such as those built with SKOS, setting "dbo:ProgrammingLanguage skos:broader dbo:Software" would be ok, because the definition of broader does not imply inheritance. That is not the case with OWL, where subclassing has very strict rules. A programming language is clearly not software, but rather the encoding (i.e. the semiotic code) used to write it. The same relation applies to natural languages and WrittenWorks -- English is clearly not a subclass of Book. I would go further: languages and texts are disjoint classes, as are Software and ProgrammingLanguage.
Maybe the author who created ProgrammingLanguage was thinking about interpreters, compilers and integrated developing environments, which must support one or more programming languages. These are indeed software, however they are not subclasses or instances of the languages they support.
I understand this ontology is not suposed to be a specialized ontology nor provide details on any branch of knowledge, but nevertheless such misplacement of classes impair correlation to other ontologies. For example, I cannot make my own software and programming language classes equivalent to dbpedia's because doing so would make my ontology inconsistent. Even without equivalence, most Software specific properties inherited by ProgramingLanguage just make no sense: for example, a programming language does not need a operating system (it does not execute) and neither can have a programmingLanguage property (this property would become reflexive). On the other hand, programming languages are defined by standards, while software is not (they can however conform to some standards, which is another different property).
I propose to fix this by moving ProgramingLanguage to Language and moving all natural languages which are today in Language to a NaturalLanguage class. Properties must be replaced accordingly.
Language
NaturalLanguage
ProgramingLanguage
Software
VideoGame
One could vote for another subclass like ArtificialLanguage, but this would include Esperanto and other made-up pseudolanguages, which I don't think would be apropriate. These should be classified just as Language, since they are neither natural nor programming languages.
In bodies of knowledge such as those built with SKOS, setting "dbo:ProgrammingLanguage skos:broader dbo:Software" would be ok, because the definition of broader does not imply inheritance. That is not the case with OWL, where subclassing has very strict rules. A programming language is clearly not software, but rather the encoding (i.e. the semiotic code) used to write it. The same relation applies to natural languages and WrittenWorks -- English is clearly not a subclass of Book. I would go further: languages and texts are disjoint classes, as are Software and ProgrammingLanguage. Maybe the author who created ProgrammingLanguage was thinking about interpreters, compilers and integrated developing environments, which must support one or more programming languages. These are indeed software, however they are not subclasses or instances of the languages they support. I understand this ontology is not suposed to be a specialized ontology nor provide details on any branch of knowledge, but nevertheless such misplacement of classes impair correlation to other ontologies. For example, I cannot make my own software and programming language classes equivalent to dbpedia's because doing so would make my ontology inconsistent. Even without equivalence, most Software specific properties inherited by ProgramingLanguage just make no sense: for example, a programming language does not need a operating system (it does not execute) and neither can have a programmingLanguage property (this property would become reflexive). On the other hand, programming languages are defined by standards, while software is not (they can however conform to some standards, which is another different property). I propose to fix this by moving ProgramingLanguage to Language and moving all natural languages which are today in Language to a NaturalLanguage class. Properties must be replaced accordingly.
Language
Software
One could vote for another subclass like ArtificialLanguage, but this would include Esperanto and other made-up pseudolanguages, which I don't think would be apropriate. These should be classified just as Language, since they are neither natural nor programming languages.