RE: ISSUE-104: The non-disallowed vocabulary in OWL 1 DL

Hello,

OK, so we can have a discussion about allowing these as an exception in OWL 2 DL. Personally, I would prefer to ban all RDF
vocabulary from OWL 2 DL because it makes the language simpler, and it minimizes the ambiguity. For example, people are confused
with RDF reification in general (just look at the stir that the usage of reification has caused in this WG), so I would prefer
people to use a shadow vocabulary.

Similarly, providing a built-in vocabulary for collections might be confusing because it might suggest to people that there is some
magic going on in the background.



I am, however, not going to strongly disagree here. In fact, I can see a value in providing a common modeling pattern for modeling
collections in OWL 2. If we were to do so, I would like to add a subsection about this to the structural spec in which we would
clearly state what the actual meaning of such a vocabulary is.

An important question is to see whether the usage of reification vocabulary and collections can somehow cause problems for parsing
of OWL 2 DL. In particular, we are using rdf:List and reification for encoding the syntactic structure of an OWL 2 DL ontology.
Therefore, it is not immediately clear to me that we cannot somehow come up with an OWL 2 DL ontology that, when we serialize it
into an RDF graph, we cannot parse back.

Another issue arises with collections and the member properties rdf:_n. Since we got rid of property punning, each rdf:_n can be
either an object or a data property, but not both. The only way of fixing this that I see is to introduce a different collection
vocabulary in OWL 2 that would subclass the RDF vocabulary and provide the necessary distinctions.

Regards,

	Boris

> -----Original Message-----
> From: Michael Schneider [mailto:schneid@fzi.de]
> Sent: 09 June 2008 14:40
> To: Boris Motik
> Cc: public-owl-wg@w3.org
> Subject: RE: ISSUE-104: The non-disallowed vocabulary in OWL 1 DL
> 
> Hi Boris!
> 
> Personally, I agree with disallowing custom use of every URI which plays a
> role within the syntax of OWL itself. And I believe that most people would
> believe that a triple such as
> 
>   rdf:value rdf:type owl:imports
> 
> is simply a syntax error, although it is actually allowed in OWL 1 DL,
> according to the list below. So in these cases, I would agree to simply regard
> this as an EDITORIAL bug in OWL 1 DL.
> 
> However, the situation is different for RDF Reification and collections (BagS
> and friends):
> 
>   * This vocabulary has not been used as syntax vocabulary in the RDF syntax
> of OWL 1 DL.
> 
>   * For reification, it is explicitly mentioned in sec. 4.2 / AS&S that it may
> be used.
> 
> If people have created OWL 1 DL ontologies in the past, which use reification,
> then they probably won't be happy to learn that their ontologies are not valid
> OWL 2 DL ontologies anymore. So this might be a real backwards compatibility
> issue.
> 
> Michael
> 
> >-----Original Message-----
> >From: public-owl-wg-request@w3.org [mailto:public-owl-wg-request@w3.org]
> >On Behalf Of Boris Motik
> >Sent: Sunday, June 08, 2008 10:17 AM
> >To: public-owl-wg@w3.org
> >Subject: RE: ISSUE-104: The non-disallowed vocabulary in OWL 1 DL
> >
> >
> >Hello,
> >
> >Thanks Michael for this list.
> >
> >The very fact that this list seems, as you say it, buggy and complicated
> >in OWL 1 DL seems to show us that we should simplify
> >matters in OWL 2 DL. I don't see any particular value in allowing, for
> >example, OWL DL statements of the form
> >
> >   :w rdf:type rdf:Statement .
> >
> >The idea of the built-in vocabulary in general is that it has a built-in
> >semantics and is therefore akin to logical operators, and
> >not elements from the signature. In first-order logic, the usage of
> >operators as part of a language does not make much sense. Since
> >OWL 2 DL is a first-order fragment of OWL 2 Full, it makes therefore
> >sense to prohibit the usage of the built-in vocabulary
> >everywhere.
> >
> >It might be that the actual implementation of this issue in OWL 1 DL was
> >different; however, this has clearly been the intent.
> >Therefore, even if changing such details in OWL 2 DL might introduce
> >some form of backwards incompatibility, I would rather declare
> >this to be a bug in OWL 1 DL and fix it in OWL 2 DL, than to put up with
> >all the unnecessary complexity.
> >
> >
> >In general, I strongly support putting all of built-in vocabulary "off
> >limits" in OWL 2, without any exceptions. I believe that this
> >leads to simplicity and clarity: the built-in vocabulary is something
> >that is used to enable the inner workings of the logic, and
> >therefore should not be tampered with. My ISWC 2005 paper shows that it
> >is quite easy to get these things wrong and get an
> >undecidable language. In future revisions of OWL, we might extend the
> >built-in vocabulary, and we want to make sure that this does
> >not introduce problems. Therefore, the simplest way is to declare all of
> >the vocabulary to be off limits.
> >
> >Regards,
> >
> >	Boris
> >
> >> -----Original Message-----
> >> From: public-owl-wg-request@w3.org [mailto:public-owl-wg-
> >request@w3.org] On Behalf Of Michael
> >> Schneider
> >> Sent: 07 June 2008 15:51
> >> To: public-owl-wg@w3.org
> >> Cc: Boris Motik
> >> Subject: ISSUE-104: The non-disallowed vocabulary in OWL 1 DL
> >>
> >> Dear all!
> >>
> >> With this mail, I am trying to bring our discussion on ISSUE-104
> >(disallowed
> >> vocabulary) a step forward.
> >>
> >> I wrote on 2008-06-03
> >> in <http://lists.w3.org/Archives/Public/public-owl-
> >wg/2008Jun/0023.html>:
> >>
> >> >>   (A) Backwards Compatibility:
> >> >>       The set of disallowed vocabulary covers URIs,
> >> >>       which were allowed to be used in OWL 1 DL.
> >> >>       Hence, we have a backwards-compatibility issue.
> >>
> >> Boris Motik answered on Wednesday, June 04
> >> in <http://lists.w3.org/Archives/Public/public-owl-
> >wg/2008Jun/0028.html>:
> >>
> >> >I accept that (A) might be an issue. Before we decide on the way
> >> >forward, however, I would appreciate it is you could provide us
> >> >with a list of vocabulary that actually causes problems.
> >>
> >> And this is what I am doing hereby (even without having an official
> >ACTION
> >> :-)).
> >>
> >> But before I come up with the list, I first want to state what my
> >> understanding of the situation is.
> >>
> >> The disallowed vocabulary in OWL 1 DL is specified as an explicit list
> >of
> >> URIs in
> >>
> >>   <http://www.w3.org/TR/owl-semantics/mapping.html#4.2>
> >>
> >> All the URIs in this section's first "Definition" are completely
> >disallowed
> >> to be used in a custom way. So they may only occur as syntax elements.
> >For
> >> example, it is disallowed in OWL 1 DL to state
> >>
> >>   rdf:type rdf:type rdf:type
> >>
> >> since the URI 'rdf:type' does not only occur as a syntax element
> >(middle
> >> position), but also as an individual (LHS) and as a class (RHS).
> >>
> >> There is a second "Definition" which itemizes a set of URIs which may
> >at
> >> least be applied as classes or properties, respectively. So these URIs
> >are
> >> only /restricted/ in their use within OWL DL ontologies, not
> >completely
> >> disallowed. According to this, it is actually allowed to have, for
> >example,
> >> the following statements in an OWL 1 DL ontology in RDF graph form:
> >>
> >>   :w rdf:type rdf:Statement .
> >>   :u rdf:_42 "Hello World!"^^xsd:string .
> >>
> >> AFAIU, every URI, which is not listed in this section, is actually
> >allowed
> >> to be used in a completely unrestricted way.
> >>
> >> Below is a list of all existing URIs within the RDF, RDFS and OWL 1
> >> namespace.
> >>
> >> According to the list, I may use the property 'rdf:value' in every
> >way,
> >> which looks strange. Even more strange: Use of 'rdfs:Literal',
> >'owl:Thing'
> >> and 'owl:Nothing' is completely unrestricted, while use of
> >'rdfs:Datatype'
> >> and 'rdfs:Resource' is completely disallowed. Even 'owl:imports' may
> >be used
> >> in an arbitrary way.
> >>
> >> I wonder whether this list has been properly reviewed by the old OWL
> >WG. It
> >> seems pretty buggy to me. One can see that allowing the use of the
> >> reification vocabulary and parts of the container vocabulary was
> >deliberate,
> >> since it is explicitly mentioned. But for many of the non-mentioned
> >URIs it
> >> is at least unclear to me, why it should be allowed to use it in an
> >> unrestricted way.
> >>
> >> I think, one of the participants of the old OWL-WG should comment on
> >this,
> >> so that we are able to proceed.
> >>
> >> Cheers,
> >> Michael
> >>
> >> == List of RDF(S) and OWL 1 vocabulary (ordered lexicographically) ==
> >>
> >> Here is what the annotations mean:
> >>
> >> * "[ ]" custom use is disallowed (i.e. listed in first "Definition")
> >> * "[c]" may be used as a class (according to second "Definition")
> >> * "[p]" may be used as a property (according to second "Definition")
> >> * "[*]" unrestricted use allowed (URI not listed in section 4.2)
> >>
> >> === RDF vocabulary ===
> >>
> >> * [p] rdf:_n      // for n >= 1
> >> * [c] rdf:Alt
> >> * [c] rdf:Bag
> >> * [ ] rdf:first
> >> * [ ] rdf:List
> >> * [ ] rdf:nil
> >> * [p] rdf:object
> >> * [p] rdf:predicate
> >> * [ ] rdf:Property
> >> * [ ] rdf:rest
> >> * [c] rdf:Seq
> >> * [c] rdf:Statement
> >> * [p] rdf:subject
> >> * [ ] rdf:type
> >> * [*] rdf:value
> >> * [*] rdf:XMLLiteral
> >>
> >> === RDFS vocabulary ===
> >>
> >> * [ ] rdfs:Class
> >> * [*] rdfs:comment
> >> * [ ] rdfs:Container
> >> * [ ] rdfs:ContainerMembershipProperty
> >> * [ ] rdfs:Datatype
> >> * [ ] rdfs:domain
> >> * [*] rdfs:isDefinedBy
> >> * [*] rdfs:label
> >> * [*] rdfs:Literal
> >> * [ ] rdfs:member
> >> * [ ] rdfs:range
> >> * [ ] rdfs:Resource
> >> * [*] rdfs:seeAlso
> >> * [ ] rdfs:subClassOf
> >> * [ ] rdfs:subPropertyOf
> >>
> >> === OWL vocabulary ===
> >>
> >> * [ ] owl:AllDifferent
> >> * [ ] owl:allValuesFrom
> >> * [ ] owl:AnnotationProperty
> >> * [*] owl:backwardCompatibleWith
> >> * [ ] owl:cardinality
> >> * [ ] owl:Class
> >> * [ ] owl:complementOf
> >> * [ ] owl:DataRange
> >> * [ ] owl:DatatypeProperty
> >> * [ ] owl:DeprecatedClass
> >> * [ ] owl:DeprecatedProperty
> >> * [ ] owl:differentFrom
> >> * [ ] owl:disjointWith
> >> * [ ] owl:distinctMembers
> >> * [ ] owl:equivalentClass
> >> * [ ] owl:equivalentProperty
> >> * [ ] owl:FunctionalProperty
> >> * [ ] owl:hasValue
> >> * [*] owl:imports
> >> * [*] owl:incompatibleWith
> >> * [ ] owl:intersectionOf
> >> * [ ] owl:InverseFunctionalProperty
> >> * [ ] owl:inverseOf
> >> * [ ] owl:maxCardinality
> >> * [ ] owl:minCardinality
> >> * [*] owl:Nothing
> >> * [ ] owl:ObjectProperty
> >> * [ ] owl:oneOf
> >> * [ ] owl:onProperty
> >> * [ ] owl:Ontology
> >> * [ ] owl:OntologyProperty
> >> * [*] owl:priorVersion
> >> * [ ] owl:Restriction
> >> * [ ] owl:sameAs
> >> * [ ] owl:someValuesFrom
> >> * [ ] owl:SymmetricProperty
> >> * [*] owl:Thing
> >> * [ ] owl:TransitiveProperty
> >> * [ ] owl:unionOf
> >> * [*] owl:versionInfo
> >>
> >
> >

Received on Monday, 9 June 2008 13:56:24 UTC