- From: Jiri Prochazka <ojirio@gmail.com>
- Date: Tue, 10 Feb 2009 12:49:14 +0100
- To: Richard Cyganiak <richard@cyganiak.de>
- CC: semantic-web@w3.org
- Message-ID: <499169BA.1020107@gmail.com>
Hi Richard, You are right with :isPromotedProperty that it offers no reasoning use, it just states the existence of the relation between a property and a class and more or less exists to document the vocabulary usage on itself. I have removed it - in fact reworked the whole ontology - read on. As suggested by Richard Newman, I stopped using term "promotion" and replaced it with "reification", hope it is a proper term. Working on the example has made me realize serious problems with the first draft of the vocabulary - what if one property-class is reification of several properties? I have reworked the vocabulary, having this in mind and reasoning as no. 1 concern: :PropertyReification a rdfs:Class . :reifiedProperty a rdf:Property ; rdfs:domain :PropertyReification ; rdfs:range rdf:Property . :reifiedClass a rdf:Proeprty ; rdfs:domain :PropertyReification ; rdfs:range rdfs:Class . :fromDomainToDomainOf a rdf:Property ; rdfs:domain :PropertyReification ; rdfs:range rdf:Property . :fromRangeToDomainOf a rdf:Property ; rdfs:domain :PropertyReification ; rdfs:range rdf:Property . :fromDomainToRangeOf a rdf:Property ; rdfs:domain :PropertyReification ; rdfs:range rdf:Property . :fromRangeToRangeOf a rdf:Property ; rdfs:domain :PropertyReification ; rdfs:range rdf:Property . Here is the reqested example: _:1 a :PropertyPromotion ; :reifiedProperty tag:taggedWithTag ; :reifiedClass tag:Tagging ; :fromDomainToDomainOf tag:tag ; :fromDomainToRangeOf tag:taggedResource ; :fromRangeToRangeOf tag:associatedTag . _:2 a :PropertyPromotion ; :reifiedProperty tag:isTagOf ; :reifiedClass tag:Tagging ; :fromDomainToRangeOf tag:associatedTag ; :FromRangeToDomainOf tag:tag ; :fromRangeToRangeOf tag:taggedResource ; For better understanding of the example, see this diagram: http://fotopaste.cz/full/id=205 I think this is good draft and allows both ways inferring. Kind regards, Jiri Prochazka (on irc Anchakor) Richard Cyganiak wrote: > Jiri, > > I'm a bit confused. Could you provide a usage example in Turtle, e.g. > how would this be used in the Tag Ontology to relate tag:taggedWithTag > and tag:Tagging? Or, going back to another use case mentioned in the > thread, to define a class foaf:Relation that reifies foaf:knows? > > I especially don't understand what :isPromotedProperty is good for. Is > it just there so you can apply the vocabulary's idea to itself? > > The idea as such is excellent, I think. It solves a real problem in > vocabulary mapping. > > Cheers, > Richard > > > > On 9 Feb 2009, at 20:54, Jiri Prochazka wrote: > >> Hi, >> inspired with recent discussion with Richard Newman ("RDF vocabulary >> scope guidelines, promoting properties to classes - property >> identifiers") I have a suggestion to make. >> >> RDF has no way of identifying predicate (property) uses (triples), which >> only restricts information about them to: >> 1) about what they state something (domain) >> 2) what they state about something (range) >> >> This is insufficient for number of uses, take for example Richards tag >> ontology: http://www.holygoat.co.uk/projects/tags/ >> >> Apart from properties tag:taggedWithTag and tag:isTagOf, it defines >> class tag:Tagging, which extends them (it is these properties promoted >> to class), allowing more information about the relation to be expressed. >> >> This is a good thing, but unfortunately there is no link between the >> properties and the class, which makes the data tagged with the >> properties and the data tagged with the class, like they each used >> different non-interlinked vocabularies... >> >> I suggest to develop an extension to the vocabulary describing >> vocabularies (RDFS, OWL), so vocabulary designers could specify the link >> and inferencing engines could work with it... >> >> The vocabulary should map the property to the property-class since the >> expressiveness of the property is subset of the one of the >> property-class. >> >> Basically the vocabulary draft should be: >> >> :isPromotedProperty a rdf:Property ; >> rdfs:domain rdfs:Class ; >> rdfs:range rdf:Property . >> # But also it should use it's own philosophy on itself: >> :PropertyPromotion a rdfs:Class ; >> rdfs:subClassOf rdf:Property . (really not sure here) >> :promotionOf a rdf:Property ; >> rdfs:domain :PropertyPromotion ; >> rdfs:range rdf:Property . >> :hasDomain a rdf:Property ; >> rdfs:subPropertyOf rdfs:domain ; (really not sure here) >> rdfs:domain :PropertyPromotion . >> :hasRange a rdf:Property ; >> rdfs:subPropertyOf rdfs:range ; (really not sure here) >> rdfs:domain :PropertyPromotion . >> # And final craziness: >> :PropertyPromotion a :PropertyPromotion ; >> :promotionOf :isPromotedProperty ; >> :hasDomain rdfs:Class ; >> :hasRange rdf:Property . >> :PropertyPromotion :isPromotedProperty :isPromotedProperty . >> >> Important is that the conversion can be done both directions. >> >> Please comment on this proposal. >> If at least some people think this is a good idea, I could work on the >> vocabulary and rdfs:label and rdfs:comment it and publish it, however in >> corner of my mind I think it would need backing of W3C to be of any use >> (as all vocabulary describing vocabularies). >> >> Kind regards, >> Jiri Prochazka >> >
Received on Tuesday, 10 February 2009 11:51:17 UTC