jimregan / mlode

Automatically exported from code.google.com/p/mlode
0 stars 0 forks source link

check glottolog ontology #51

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Could you check the Glottolog ontology for consistency and file bugs, if you 
find problems:
http://thedatahub.org/de/dataset/glottolog-langdoc/resource/3b89e336-227d-4289-9
92d-46a53d570815

Original issue reported on code.google.com by kur...@googlemail.com on 8 Aug 2012 at 6:53

GoogleCodeExporter commented 9 years ago
The glottolog ontology at
http://glottolog.livingsources.org/ontologies/glottolog.owl
seems OK for me.

Original comment by mohamedd...@gmail.com on 8 Aug 2012 at 9:38

GoogleCodeExporter commented 9 years ago
Using the Protege explanation workbench 
(http://owl.cs.manchester.ac.uk/explanation/) with the Pellet 1.5 reasoner, the 
inferred class hierarchy is Thing=Concept=Languoid=NonterminalLanguoid. This is 
obviously wrong because NonTerminalLanguoid rdfs:subclassOf Languoid. 

The error is in the sublanguoid  (domain:NonterminalLanguoid, range:Languoid) 
and superlanguoid (domain:Languoid, range:NonterminalLanguoid) object 
properties. Domains and ranges seem strange to me, but they definitely should 
not be both reflexive.

NonterminalLanguoid and TerminalLanguoid should also be explicitly defined as 
disjoint.

Original comment by der.brue...@googlemail.com on 12 Aug 2012 at 4:26

GoogleCodeExporter commented 9 years ago
I can easily remove the reflexive property, but this could create problems for 
isolates, which are frequently considered a family and a language at the same 
time. 

I do not understand why you think that domains and ranges are strange? 
NonterminalLanguoid is a Languoid with 'children'. If we have a sub/superset 
relation, there is at least one of the languoids which is nonterminal by  
virtue of including the other one. This means that domain/range can be 
constrained a little bit further.

Original comment by sebastia...@googlemail.com on 14 Aug 2012 at 3:28

GoogleCodeExporter commented 9 years ago
The problem is that those relations make both classes equivalent. The 
sub/superlanguoid relation is reflexive, transitive and symmetric, so they are 
equivalent. It can then be further followed, that TerminalLanguoid is a 
subclass of NonTerminalLanguoid, which set me off in the first place. If 
Terminal and NonterminalLanguoid are not disjoint (what I thought they were), 
then it could be fine. Note that I don't know the domain, the inferred class 
hierarchy just didn't look right to me.

Original comment by der.brue...@googlemail.com on 14 Aug 2012 at 5:18

GoogleCodeExporter commented 9 years ago
> The sub/superlanguoid relation is reflexive, transitive and symmetric

It should not be symmetric (and it is not in my file). If Saxonian is a 
sublanguoid of Germanic, it does not follow that Germanic is a sublanguoid of 
Saxonian. 

Does/would the removal of "symmetric" solve the issue as far as the reasoner is 
concerned?

Original comment by sebastia...@googlemail.com on 15 Aug 2012 at 7:09

GoogleCodeExporter commented 9 years ago
So I spoke with Sebastian Hellmann and the problem is this: These are reflexive 
relations between different classes. The reasoner entails that, if the relation 
is reflexive, domain and range must be the same class. So Languoid and 
Nonterminallanguoid are equivalent. To get rid of this equivalence, the 
reflexivity must be removed from the objectproperties. 
Protege is a nice tool for ontology debugging / editing purposes. There is an 
explanation-plugin for protege which I wrote about here: 
http://code.google.com/p/mlode/wiki/DebuggingOntologies 
It isn't very useful in this case but the difference between asserted and 
inferred class hierarchy shows the modelling error.

Original comment by der.brue...@googlemail.com on 15 Aug 2012 at 12:53

GoogleCodeExporter commented 9 years ago
OK, I understand. There are two possibilities

a) Just set domain and range to languoid. No terminal, no nonterminal. This 
would allow for bogus statements like "Germanic is a sublanguoid of Sebastian 
Nordhoff's idiolect" (my idiolect being terminal), but this is no big issue. 
"Germanic is a sublanguoid of German" is equally bad, and currently allowed as 
both are nonterminal.

b) Remove the reflexivity. This could have consequences in a number of areas 
which I cannot predict. For instance, the geographical bounding box is 
calculated over all sublanguoids with geo information. If sublanguoid is not 
reflexive, this will exclude the languoid itself, often resulting in now 
bounding box at all. Same goes for references. 

I would therefore suggest to go with a) and loosen the constraints on domain 
and range to "Languoid" in both cases

Original comment by sebastia...@googlemail.com on 15 Aug 2012 at 1:04

GoogleCodeExporter commented 9 years ago
I think this would be a good solution. What about a disjointness axiom between 
Terminal and Nonterminallanguoid? I'm sorry to say I'm not an expert on 
ontologies, but I will take a second look at the ontology and see if it can be 
further refined.

Original comment by der.brue...@googlemail.com on 15 Aug 2012 at 1:14

GoogleCodeExporter commented 9 years ago
changed Range and Domain for Sub/Superlanguoid;
Added disjointness to (Non)TerminalLanguoid

Original comment by sebastia...@googlemail.com on 17 Aug 2012 at 11:40

GoogleCodeExporter commented 9 years ago
please verify

Original comment by sebastia...@googlemail.com on 23 Aug 2012 at 1:59

GoogleCodeExporter commented 9 years ago
verified with jena eyeball with no errors.

Original comment by mohamedd...@gmail.com on 23 Aug 2012 at 3:07