- From: Alan Ruttenberg <alanruttenberg@gmail.com>
- Date: Sun, 16 Mar 2008 21:30:28 -0400
- To: public-owl-wg@w3.org
RDF/XML serialization for anonymous inverse properties To remind: > Anonymous inverse properties can be used in ObjectPropertyAssertion > axioms like > > ObjectPropertyAssertion(InverseObjectProperty(property) subject > object ) > > According to [1], the RDF/XML serialization of this assertion will be > > subject _:p object . > _:p owl11:inverseObjectPropertyExpression property . > > which is not valid RDF because RDF does not allow bnodes in the > predicate position [2]. AFAICT this is the only place where > anonymous inverse properties appear in the predicate position (all > other uses get serialized into subject or object position). > Disallowing anonymous inverses in ObjectPropertyAssertion would > solve the problem (and would not affect the expressivity). I think it is beneficial to allow for anonymous inverses in ObjectPropertyAssertion. Note that this is not an issue with RDF/XML specifically, but rather of RDF proper. The proposal is as follows. 1) InverseObjectProperty can currently be nested. Thus we can have InverseObjectProperty[1](InverseObjectProperty[2]... InverseObjectProperty[N](P) closed with an appropriate number of parentheses. If N is even, rewrite the expression to "P", otherwise rewrite the expression to "InverseObjectProperty(P)". If the expression is now P we're done. [Alternatively, change the grammar so that the nesting is not possible - this is my personal preference, btw] 2) Change the production "inverseObjectProperties := 'InverseObjectProperties' '(' { annotation } objectPropertyExpression objectPropertyExpression ')'" to "inverseObjectProperties := 'InverseObjectProperties' '(' { annotation } objectPropertyURI objectPropertyURI ')'" I don't see the need for using objectPropertyExpression here, and it simplifies the below. 3) Consider that there may already be an axiom InverseObjectProperties(P IP) in which case I'll say IP exists. If IP exists, on serialization, an implementation MAY substitute IP for InverseObjectPropery(P) and we're done. (I'm mixed on this one - I could take it or leave it) 4) If IP exists an implementation may and if not it must create a new URI to name the inverse property, in a canonical way - the URI that results from the concatenation of unabbreviated form of "owl11:aip_" and the % encoded objectPropertyURI - call this aiP. Note that this is guaranteed to not collide with another URI. if this choice is made, then add another triple - aiP owl:inverseOf P -Alan
Received on Monday, 17 March 2008 01:31:10 UTC