OM2 OWL profile conformance
Opened this issue · 20 comments
I'm about to use OM2 ontology for a model that will need to be inferancable so I would need the ontology to be OWL DL at most, OWL EL ideally. Which profile is supported by OM2?
I think the ontology is DL, but it should be checked. It is definitely not EL - it e.g. has 'allValuesFrom' and 'oneOf'.
What do you exactly mean with 'inferancable'? :)
Thank you for the answer! I will check myself then, if it is not DL then I may need to adapt it. I meant inferencable, a word I created which would translate to: "being able to perform decidable reasoning tasks". This word should exist! :) I need to be able to perform reasoning tasks that will complete. The ontology I will define will follow the EL profile but, maybe I am wrong, I think the global reasoning capabilities on an ontology is limited by the least inferencable ontology contained/imported in/by it.
Hey great, looking forward to the result! :) (Whether it is DL or the adaptation of OM.)
Good word! :) In principle, of course, an ontology should/could be used to perform reasoning tasks, although myself I don't do that very often. So, wouldn't every ontology in principle be inferencable?
Interesting, whether the inferencability of an ontology is determined by the least inferencable ontology it contains/imports. There are people who know a lot more about reasoning then me; they could perhaps better explain this to us! :)
To the best of my knowledge reasoning on OWL Full ontologies may never terminate so they wouldn't be inferencable. I don't feel I can explain anything at this moment :) But it seems to me that reasoning is one of the main point of interest of OWL. In fact, without it, even basic superclass querying would not return the subclasses instances if I am not mistaken. I am more in the analysis phase of my project but when/if I get any concrete result, it will be my pleasure to let you know the outcome :)
Indeed, reasoning is one of the main topics of OWL and RDF. And knowledge representation, although one of the main purposes is to reason with that. The knowledge representation uses URIs, so it has a global component.
Looking forward to hear more about your project/results - good luck! :)
What is your project about? :)
It’s an ontology about technical specifications in the electronic world. I want to describe things to their lowest atomic level using an ontology, I am particularly interested in describing materials, both complex and simple. I will probably extend this definition eventually to include human built things. I continued my researches and inadvertently found out about EMMO ontology. Maybe you know about it!? They have their own measurements ontology which is based on Pierce semiotic theory and mereotopology. I am still investigating but if I conclude it’s good, I may go that way since it would give me a proper framework for « world description » that would allow me to go from macro to micro.
That sounds very interesting! :) No, I didn't know about EMMO, so thanks for the hint! I understand it includes units as well, but couldn't find a description about it. Perhaps you have found one?
Very interesting to investigate all existing ontologies for these purposes and extending them!
The best documentation I could find is in a specific repo in GitHub The units part is not as complete as OM2 in my opinion :) But I think I will need to other parts that come with it and more specifically the eventual/possible integration/benefit with other ontologies that will define certain materials.
Thanx! :) Do you mean e.g. this pdf? https://emmo-repo.github.io/versions/1.0.0-alpha/emmo.pdf.
AT first glance it seems there are some specific issues, but I should study it more deeply. https://github.com/jmkeil, do you know anything about the units part of this ontology?
Yes this one! They are still in alpha so I guess it will change soon and more details will be added. If you happen to study it more, let me know which kind of specific issues you find!
Thanx! :) Yes, I hope to study it more deeply!
Would it be worthwhile for EMMO to use OM?
Are you going to study it more deeply?
I think it would be worthwhile but the EMMO project does not seem to progress, it's been in alpha for 4 months without commits. In my specific case, after much regrets, I finally decided to drop OWL entirely. There was too much complexities associated with simple tasks that the tradeoffs became too important compare with other database/modelisation technologies.
Thanks for your update, both about EMMO and your project. In both cases: sorry to hear that. :/ Of course it's very good that you have made an objective choice for some technology or not, so I appreciate that. And I can understand what you're saying.
Wish you all the best for your future work!
Jumping in this conversation as it seems to be related:
OM2 defines Pressure both as named individual and a class. As far as I recall this is not allowed in OWL DL @sebastienh ?
om:Pressure rdf:type owl:NamedIndividual ;
om:Pressure rdf:type owl:Class ;
@HajoRijgersberg In OM there is usually lowercase URIs used for named Individuals. I was wondering if this has been a typo for 'Pressure'?
Thanks and BR
Hi Georg, thanks for your attention! :)
Well, I haven't defined Pressure (and other quantity classes) as NamedIndividuals. Perhaps this is due to loading the ontology in an editor that shows it like this? Pressure is only a class. For that reason it starts with a capital. Individuals indeed start with a lowercase letter (except in case they start with person names, e.g.).
Cheers, Hajo
Hi @HajoRijgersberg ,
your right; there is no statement
om:Pressure rdf:type owl:NamedIndividual .
in OM.rdf serialisation of OM.
However, I looked up the file and found these statements:
<owl:Class rdf:about="&om;Pressure">
<om:commonlyHasUnit rdf:resource="&om;centimetreOfMercury"/>
<om:commonlyHasUnit rdf:resource="&om;millimetreOfMercury"/>
</owl:Class>
As far as I understand this implies that om:Pressure
is a owl:NamedIndividual
. A object property assertion between a owl:Class
and a owl:NamedIndividual
might be problematic in in OWL2 DL. The term for this is punning (https://www.w3.org/2007/OWL/wiki/Punning)
Potentially this can be changed with the introduction of two IRIs for the different meanings of Pressure:
om:pressure rdf:type owl:NamedIndividual .
om:Pressure rdf:type owl:Class .
?
Interesting, Georg, I have to dive into this. It was not my intention that quantity classes are named individuals. Perhaps I have to remove the commonlyHasUnit relations.
Jumping back to the original topic of this issue, I also had problems to use OM2 with a reasoner and checked its profile with robot validate-profile (robot validate-profile --profile DL --input om-2.0.rdf
). It turned out that OM2 has 13 violations of the OWL2 DL profile:
- Use of reserved vocabulary for class IRI: rdf:Seq [ClassAssertion(rdf:Seq http://www.wurvoc.org/bibliography/om-2/Stroemgren1956Authors) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Not enough operands; at least two needed: ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/kilogramPerHectareDay)) [EquivalentClasses(http://www.ontology-of-units-of-measure.org/resource/om-2/AreaDensityRateUnit ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/kilogramPerHectareDay))) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Not enough operands; at least two needed: ObjectUnionOf(http://www.ontology-of-units-of-measure.org/resource/om-2/FixedPoint) [SubClassOf(http://www.ontology-of-units-of-measure.org/resource/om-2/FixedPoint ObjectAllValuesFrom(http://www.ontology-of-units-of-measure.org/resource/om-2/hasPoint ObjectUnionOf(http://www.ontology-of-units-of-measure.org/resource/om-2/FixedPoint))) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Not enough operands; at least two needed: ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/luxSecond-Time)) [EquivalentClasses(http://www.ontology-of-units-of-measure.org/resource/om-2/ExposureUnit ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/luxSecond-Time))) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Not enough operands; at least two needed: ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/gramPerSquareMetre http://www.ontology-of-units-of-measure.org/resource/om-2/kilogramPerHectare http://www.ontology-of-units-of-measure.org/resource/om-2/kilogramPerSquareMetre http://www.ontology-of-units-of-measure.org/resource/om-2/ounceAvoirdupoisPerSquareYard-International)) [EquivalentClasses(http://www.ontology-of-units-of-measure.org/resource/om-2/AreaDensityUnit ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/gramPerSquareMetre http://www.ontology-of-units-of-measure.org/resource/om-2/kilogramPerHectare http://www.ontology-of-units-of-measure.org/resource/om-2/kilogramPerSquareMetre http://www.ontology-of-units-of-measure.org/resource/om-2/ounceAvoirdupoisPerSquareYard-International))) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Use of reserved vocabulary for class IRI: rdf:Seq [ClassAssertion(rdf:Seq http://www.wurvoc.org/bibliography/om-2/IntroAstronomicalPhotometryAuthors) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Not enough operands; at least two needed: ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/degreeFahrenheit)) [EquivalentClasses(http://www.ontology-of-units-of-measure.org/resource/om-2/FahrenheitTemperatureUnit ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/degreeFahrenheit))) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Use of reserved vocabulary for class IRI: rdf:Seq [ClassAssertion(rdf:Seq http://www.wurvoc.org/bibliography/om-2/Crawford1958Authors) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Not enough operands; at least two needed: ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/lumenPerWatt)) [EquivalentClasses(http://www.ontology-of-units-of-measure.org/resource/om-2/LuminousEfficacyUnit ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/lumenPerWatt))) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Not enough operands; at least two needed: ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/degreeRankine)) [EquivalentClasses(http://www.ontology-of-units-of-measure.org/resource/om-2/RankineTemperatureUnit ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/degreeRankine))) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Not enough operands; at least two needed: ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/degreeReaumur)) [EquivalentClasses(http://www.ontology-of-units-of-measure.org/resource/om-2/ReaumurTemperatureUnit ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/degreeReaumur))) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Not enough operands; at least two needed: ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/lumenSecond-Time)) [EquivalentClasses(http://www.ontology-of-units-of-measure.org/resource/om-2/LuminousEnergyUnit ObjectUnionOf(ObjectOneOf(http://www.ontology-of-units-of-measure.org/resource/om-2/lumenSecond-Time))) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
- Not enough operands; at least two needed: ObjectIntersectionOf(ObjectHasValue(http://www.ontology-of-units-of-measure.org/resource/om-2/hasAggregateFunction http://www.ontology-of-units-of-measure.org/resource/om-2/average)) [EquivalentClasses(http://www.ontology-of-units-of-measure.org/resource/om-2/AverageSpeed ObjectIntersectionOf(ObjectHasValue(http://www.ontology-of-units-of-measure.org/resource/om-2/hasAggregateFunction http://www.ontology-of-units-of-measure.org/resource/om-2/average))) in OntologyID(OntologyIRI(http://www.ontology-of-units-of-measure.org/resource/om-2) VersionIRI())]
There are a lot more for the other profiles. I think it would be worth to choose one of OWL 2 QL or OWL 2 RL and try to make OM compliant with it. But lets do that in a fresh issue.
But this OWL 2 DL violations are quite easy to fix. Pull request pending.
Thanx Jan Martin, for detecting these issues with the robot validate profile! And thanx so much for (immediately!) fixing these issues. I have merged your pull request some minutes ago. The proposed changes seemed very fine to me! :)
And thanx for the suggestion to choose between OWL 2 QL and OWL 2 RL. I'll dive into these formats (haven't known them so far). Looking forward to further cooperation, ideas, discussion, etc.! :) Indeed a very good subject for a fresh version.
@GeorgFerdinandSchneider, I also still have the intention to dive further in the (possible?) issue you have raised about the named individuals. Unfortunately I have not had yet time for that... :/ Did you perhaps make some progress here?