From: Dan Connolly ([email protected])
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