a recipie for ont:UnambiguousProperty, rdfs:isDefinedBy

From: Dan Connolly (connolly@w3.org)
Date: 05/16/01


I took an action to explain how to use
ont:UnambiguousProperty to make unique
names, to see if this addresses the
requirements that led Stefa to propose
introducing the unique names assumption
in DAML+OIL.
http://www-db.stanford.edu/~stefan/damllayer.html

So I made a little ontology of colors:

  http://www.w3.org/2001/05dun/colors.n3
  http://www.w3.org/2001/05dun/colors.rdf

containing, e.g.

:red :colorName "red".
:yellow :colorName "orange".
:blue :colorName "blue".

The :colorName property is described/defined ala...

:colorName u:label "color name";
  a ont:UniqueProperty;
  u:subPropertyOf u:label;
  u:domain :Color;
  u:comment """note the domain; each thing with a colorName
  is a Color. note also that this is a UniqueProperty;
  things with different colorNames are different.""".

And that's pretty much all there is to it.

If this seems to make sense, I can expand
the README info at
  http://www.w3.org/2001/05dun/
to make this a chapter in our cookbook-to-be.


Now these names are "scoped" by the :colorName
property; somebody can use "red" as the rdfs:label
of something else without creating a conflict.
Each party that wants to establish a context
for unique names can make up their own property
analagous to
http://www.w3.org/2001/05dun/colors#colorName .
You could use http://example/catalog#className
in an large/flat ontology.

We could put this sort of thing in the "standard library",
i.e. introduce a daml:URI property that takes a
URI in string form, and provides names that are
unique througought the Web.

This would be somewhat tedious to use:

  :red ont:URI "http://www.w3.org/2001/04dun/colors#red".
  :green ont:URI "http://www.w3.org/2001/04dun/colors#green".
  :blue ont:URI "http://www.w3.org/2001/04dun/colors#blue".

and so on. The :colorName style is handy because
you can make it a subPropertyOf rdfs:label, and
you usually want to provide labels anyway;
so it kills two birds with one stone. You
don't want to use
"http://www.w3.org/2001/04dun/colors#red"
as an rdfs:label.


TimBL and I have talked about a level-breaking
property that would reduce the tedium
considerably, kinda like KIF's name function
cf
  10.3 Changing Levels of Denotation
  http://logic.stanford.edu/kif/dpans.html#10.3

Let's call this property ont:name
(and assume we've adopted the ont:unambiguousOver
proposal that I just sent).

Then I could just say

	ont:name ont:unambiguousOver :Color.
	:red rdf:type :Color.
	:green rdf:type :Color.
	:blue rdf:type :Color.

and get the same effect as the tedious version above.

Combining this with rules and some string operations,
we can build the unique namespaces Pat mentioned on the telcon...

	<> log:forAll :o, :x, :y, :oname, :xname, :yname.

	{ :o rdf:type ont:UniqueNameOntology;
		ont:name :oname.
	:x ont:name :xname.
	:y ont:name :yname.
	:xname string:notEqual :yname.
	:xname string:startsWith :oname.
	:yname string:startsWith :oname.
	}
	log:implies {
	:x ont:differentIndividualFrom :y
	}.


But I dunno if we want to go there.


[By the way... usually I use the minutes
as a trigger to work on action items. I happened
to remember this action without seeing the minutes
this time, but I don't recommend folks count
on that in the future.]

[Also... let me know if the use of RDF "Notation 3" is
too distracting. I can write in KIF-with-faked-namespaces
if that's easier, but I don't have software
to help me, yet.

For reference, RDF/n3 is explained in
  http://www.w3.org/2000/10/swap/Primer
and you can convert it to RDF/xml using the form on
  http://www.w3.org/DesignIssues/Notation3

]

-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/


This archive was generated by hypermail 2.1.4 : 04/02/02 EST