Re: Extending RDFS, property-classes

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:

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:
>> 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