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