1

I have a small ontology defined as shown in the following picture:

enter image description here

I created an individual for Dataset and one for Algorithm. I expected that the reasoner would infer the Algorithm individual as Linear_Least_Regression, but this didn't happen.

This is the definition of the Dataset individual. As it can be seen, the individual fulfils the requirements for a Dataset needed by the Linear_Least_Regression enter image description here

Also, if I add the Linear_Least_Regression as a type for the Algorithm individual, the reasoner does not complain.

I also tried to get the Linear_Least_Regression as a result with a DL Query but this also didn't work.

enter image description here

Did I miss something when modelling my ontology or does the problem lie at the reasoner? I tried following two reasoners: FaCT++ 1.6.5 and HermiT 1.3.8.413 and Protégé 5

Paul
  • 1,325
  • 2
  • 19
  • 41
  • 2
    OWL makes OWA — open world assumption. Try to make properties functional (if that meets your requirements). Please do not paste images instead of code. – Stanislav Kralin Oct 21 '18 at 20:39
  • @StanislavKralin making the properties functional did not help. O posted pictures, because in my opinion, it easier to determine the structure from the pictures than from the owl – Paul Oct 22 '18 at 04:36
  • You defined `LinearRegression` as subclass of `hasDataset only (hasObservations >= 250)` You're querying for `hasDataset only (hasObservations value 280)` but why do you expect that `LinearRegression` should be returned? As a superclass or what do you expect? – UninformedUser Oct 22 '18 at 06:45
  • @AKSW I expected to see `Linear_Least_Regression` returned as `Subclasses`/`Direct Subclasses`, but that didn't happen. – Paul Oct 22 '18 at 06:53
  • Hm, `Linear_Least_Regression` is just a **subclass of** something that is more general than `hasDataset only (hasObservations value 280)`, or not? I mean, an instance could also have a dataset with only 251 observation, I don't get why any `Linear_Least_Regression` should be an instance of `hasDataset only (hasObservations value 280)`, i.e. which always has a dataset with exactly 280 observations. – UninformedUser Oct 22 '18 at 06:59
  • the `Linear_Least_regression` is a subclass of `hasDataset only (hasObservations only xsd:integer[>= 250]` and in the query I want to receive the class which fulfills `hasDataset only (hasObservations value 280)`. I think that I'm pretty clear in in the defined axioms. – Paul Oct 22 '18 at 07:02
  • if it helps, I can post the `owl` file – Paul Oct 22 '18 at 07:05
  • No, I don't think so. OWL semantics is based on set theory. Please think about both class definitions as sets of instances. And then think about which one comprises more instances. It should be clear that `hasDataset only (hasObservations value 280)` is more general than `hasDataset only (hasObservations value 280)` – UninformedUser Oct 22 '18 at 07:05
  • @AKSW what do you mean by "more general"? – Paul Oct 22 '18 at 07:11
  • I mixed up the definitions, first one should be the one from the `Linear_Least_regression` subclass axiom, i.e. `hasDataset only (hasObservations only xsd:integer[>= 250])`. This one is obviously more general, isn't it? I mean, it covers more instances than the class of `hasDataset only (hasObservations value 280)` - *"everything that has only datasets with more than 250 observations"* is broader than *"everything that has only datasets with exactly 280 observations"* isn't it? – UninformedUser Oct 22 '18 at 07:47
  • yes, but shouldn't the case `hasDataset only (hasObservations value 280)` fall into `hasDataset only (hasObservations only xsd:integer[>= 250]`? I'm thinking now, that maybe I should add some restrictions on the classes. – Paul Oct 22 '18 at 08:07
  • because I declared `Algorithm hasDataset only Dataset` and due to `OWA`, it can be that the reasoner decides that `Algorithm` is the correct type for the created individual, although it could also fit `Linear_Least_Regression` – Paul Oct 22 '18 at 08:12
  • 1
    `hasDataset only (hasObservations value 280)` falls into `hasDataset only (hasObservations only xsd:integer[>= 250])`, yes. But this means, it's a subclass of it, not a superclass. Let's make it more abstract, and rewrite `Linear_Least_regression`, `hasDataset only (hasObservations only xsd:integer[>= 250])` and `hasDataset only (hasObservations value 280)` with `A`, `B` and `C` respectively. So, we have `A SubClassOf B` and we also know that `C SubClassOf B`, right? What you can see now is that there is no chain from `A` to `C` because it's only `A SubClassOf B` and not `A EquivalentTo B` – UninformedUser Oct 22 '18 at 10:08
  • @AKSW this makes sense. Thank you for your explanation. I moved now hasDataset only (hasObservations only xsd:integer[>= 250] from subClass of to equivalent to and the DL query works perfectly. – Paul Oct 23 '18 at 04:51

0 Answers0