- From: Antoine Zimmermann <antoine.zimmermann@emse.fr>
- Date: Wed, 25 Sep 2019 12:10:39 +0200
- To: Michael F Uschold <uschold@gmail.com>, Hugh Glaser <hugh@glasers.org>
- Cc: "semantic-web@w3.org" <semantic-web@w3.org>
I'm a bit confused by what you say, but I have the impression that you are saying that "isDeprecated" is, after all, similar to a property like "hasTag". Said differently, it seems you are saying that if we dump the property "isDeprecated" in favour of a named class, then by the same arguments we should dump the property "hasTag" in favour of a class. Then, considering that a property "hasTag" can be useful and, frankly, a good modelling option, you conclude, methinks, that the arguments for dumping "isDeprecated" in favour of a class are not so clear-cut. If this is your reasoning, then I disagree. I hope you realise that the situation with a boolean property is really different than the situation with a property like hasTag. First, "tags" do not form a two-valued set. You cannot say the tag is either "winter" or "summer", and nothing else. Second, there is no expectation that something must have a tag and there is no expectation that something has exactly one tag. Even if you have a two-valued set, say D = {"A", "B"}, and a property :prop that has range D, then there is nothing special about: ex:this :prop "A", "B" . However, with all boolean properties that I've seen, there is clearly an expectation that: ex:this :booleanProp true, false . is an error. There is also the expectation that if a value is not present for the property, then it is certainly false. These expectations do not come for free in RDF/OWL. Even if you add the closed world assumption, you cannot infer that a missing value for :booleanProp means "false"^^xsd:boolean. In fact, the closed world assumption would lead you to say that *neither*: ex:this :booleanProp true . *nor*: ex:this :booleanProp false . are true. With a class :Deprecated and a closed world assumption, things that are not typed with :Deprecated would be inferred to be not deprecated. --AZ Le 25/09/2019 à 07:11, Michael F Uschold a écrit : > This is an important discussion, as this modeling question arises all > the time. > > I agree that Boolean data properties are not a great option. This is > explained in this blog: Why Not to Use Boolean Datatypes in Taxonomies > <https://www.semanticarts.com/why-not-to-use-boolean-datatypes-in-taxonomies/> > by Dave McComb. > > OWL inference may be a red herring here.You may not be running OWL > inference over a large ABox of documents?More likely, you are just going > to run inference on the TBox and then load triples into a triple store > and use whatever reasoning is provided by that vendor (highly variable, > and certainly not OWL2-DL). > > Creating a class called Deprecated will work, but may not be the best > solution. First, it goes against common practice for naming a class. > Common names for classes include “Person” and “Document”. An instance of > the first class is a person. An instance of the second class is a > document. However an instance of your proposed class is not a > ‘deprecated’. Rather it is a deprecated thing. If you named the class > DeprecatedThing, the naming convention would be respected. However, > that’s not a very satisfying class.The reason points to more fundamental > issue, aside from naming. > > The main purpose of an OWL class is to represent a set of things that > are all the same kind (person, document).Nobody thinks of being > deprecated as signifying a different kind of thing. It’s more analogous > to a tag for a photo.If you tag a photo with “winter”, this gives rise > to a set of things tagged with “winter”. One could represents that set > as an OWL class, just like one could represent the class of all > deprecated things with the class DeprecatedThing.But these sets do not > represent a kind of thing one would want to represent as an OWL class. > Rather, being deprecated or not is a characteristic or facet of a thing. > Documents and products and lot of things can have many facets. > > There is a third alternative that we use in our enterprise ontologies.I > would create a class called say DeprecationIndicator with two instances: > isDeprecated and isNotDeprecated. These are really categories: something > is deprecated or not.There are typically many such facets and each has a > set of values. There might be a facet called Color for cars or > iPhones.An individual car or phone would have a color and there could be > several instances of the class Color (rose, midnight green, etc). An > advantage of this approach is that you avoid unnecessary proliferation > of properties, one for each facet. You do not need two properties one > for hasColor and one for hasDeprecationIndictor. Rather you can just use > a single property, say isCategorizedBy.This is further explained in this > blog: Buckets, Buckets Everywhere, Who Knows What to Think? > <https://www.semanticarts.com/gist-buckets-buckets-everywhere-who-knows-what-to-think/> > by yours truly. > > > > > On Tue, Sep 24, 2019 at 7:03 AM Hugh Glaser <hugh@glasers.org > <mailto:hugh@glasers.org>> wrote: > > Very interesting question, thanks - it helps me explore my > understanding. > Sorry - as I have said, I'm not really very good on this stuff, but > I do like to try to understand. > > Antoine, some of what you say puzzles me. > Looking at class :Deprecated > > The second model with a class :Deprecated ensures that an entity > is either of type :Deprecated, or not. > Is it not more properly the case that an Entity is either of type > :Deprecated or we don't know? (Open world) > > So the boolean version seems to perhaps give me a richer way of > recording knowledge. > > To model the boolean equivalent, you could also have a > :notDeprecated class. > And then you would have the same four categories for the class > version as you have for the boolean version. > (Not saying this is good!) > > [Hang on - I have just realised that Mikael makes no suggestion that > he will ever assert "false" - so your introducing the "false" > categories (3 & 4) is like me introducing the :notDeprecated class.] > > Although I worry about your argument here, I think that the general > principle may well be very good. > If you see booleans, especially where they always seem to be "true", > it is a flag that maybe a class should be used. > (This is very similar to seeing "= true" in an expression in a > programming language, someone isn't thinking right :-) ) > > I usually view an rdf:type triple as nothing special compared with > any other. > You assert them and match them just the same. > It just so happens that "we" have chosen that we can do > sub-classing, and so if we do that, we get some special magic that > can happen, which doesn't happen with everything else. > And that is sometimes very useful, although it can make things quite > hard to get the hang of. > > Then, as you say, there are a whole bunch of practical questions > about efficiency of stores and reasoners when you do things in > different ways. > But, as with programming, most efficiency things should be left to > the system implementation, and the source should be modelled in the > most understandable and maintainable way. > > Best > Hugh > > > On 24 Sep 2019, at 13:48, Antoine Zimmermann > <antoine.zimmermann@emse.fr <mailto:antoine.zimmermann@emse.fr>> wrote: > > > > Mikael, > > > > > > These two options definitely affects reasoning. > > > > If you have a property :isDeprecated, then any entity can fall > into 4 disjoint categories: > > > > 1. The entities that have no value for :isDeprecated. > > 2. The entities that have value "true" only. > > 3. The entities that have value "false" only. > > 4. The entities that have both values "true" and "false". > > > > Moreover, if the range of the property is unrestricted, it can > have all sorts of literal values, in any combination. > > > > If you want to make sure that all entities have exactly one of > "true" or "false" as value for :isDeprecated, you need to introduce > a cardinality axiom, which increases the complexity of reasoning > (and you need to find a reasoner that supports cardinality > restrictions on datatype properties). > > > > The second model with a class :Deprecated ensures that an entity > is either of type :Deprecated, or not. This comes for free with any > reasoner that supports a logic as simple as RDFS, without extra > axioms. Many more reasoners support axioms made on classes than > axioms made on literals and datatype properties. It's easier to > define subclasses of deprecated documents, for instance. > > > > In general, when I review an ontology document, I mark all use of > boolean properties as a mistake. Usually, boolean properties comes > from adopting a programming approach to ontology engineering rather > than a knowledge representation approach (that is, it uses the > ontology as a data structure for computation rather than as an > information model about the world, for knowledge interchange). > > > > However, when you have to go back and forth between an existing > data model such as tabular data etc. and RDF, it can be convenient > to translate booleans to booleans, so there can be exceptions to my > rule of thumb of excluding all boolean properties. > > > > > > Best, > > --AZ > > > > Le 24/09/2019 à 13:57, Mikael Pesonen a écrit : > >> Hi, > >> lets say we have documents and we want to say wheather they are > valid or deprecated. There are two ways to do this: > >> :doc1 a foaf:Document ; > >> :isDeprecated "true"^^xsd:boolean . > >> or > >> :doc1 a foaf:Document ; > >> a :Deprecated . > >> Are there some different implications on the use? Does is affect > OWL reasoning, for example? > >> Mikael > > > > -- > > Antoine Zimmermann > > Institut Henri Fayol > > École des Mines de Saint-Étienne > > 158 cours Fauriel > > CS 62362 > > 42023 Saint-Étienne Cedex 2 > > France > > Tél:+33(0)4 77 42 66 03 > > Fax:+33(0)4 77 42 66 66 > > http://www.emse.fr/~zimmermann/ > > Member of team Connected Intelligence, Laboratoire Hubert Curien > > > > -- > Hugh > 023 8061 5652 > > > > > -- > > Michael Uschold > Senior Ontology Consultant, Semantic Arts > http://www.semanticarts.com <http://www.semanticarts.com/> > LinkedIn: www.linkedin.com/in/michaeluschold > <http://www.linkedin.com/in/michaeluschold> > Skype, Twitter: UscholdM > > > -- Antoine Zimmermann Institut Henri Fayol École des Mines de Saint-Étienne 158 cours Fauriel CS 62362 42023 Saint-Étienne Cedex 2 France Tél:+33(0)4 77 42 66 03 Fax:+33(0)4 77 42 66 66 http://www.emse.fr/~zimmermann/ Member of team Connected Intelligence, Laboratoire Hubert Curien
Received on Wednesday, 25 September 2019 10:11:05 UTC