W3C home > Mailing lists > Public > public-powderwg@w3.org > July 2008

Re: PROPOSED RESOLUTION of attribution (again!) (Was Re: wdrs:issuedby fc. foaf:maker and dcterms:creator)

From: Andrea Perego <andrea.perego@uninsubria.it>
Date: Mon, 21 Jul 2008 14:44:48 +0200
Message-ID: <488484C0.6010201@uninsubria.it>
To: Public POWDER <public-powderwg@w3.org>

Phil Archer wrote:
> 
> Andrea, can I just double check this please, your solution is that we 
> define:
> 
> wdrs:issuedby rdfs:subPropertyOf foaf:Agent
> wdrs:issuedby rdfs:subPropertyOf dcterms:Agent

I guess you meant:

   wdrs:issuedby rdfs:subPropertyOf foaf:maker
   wdrs:issuedby rdfs:subPropertyOf dcterms:creator

> And
> 
> <wdrs:Agent>
>   <owl:unionOf rdf:parseType="Collection">
>     <foaf:Agent />
>     <dcterms:Agent />
>   </owl:unionOf>
> </wdrs:Agent>

No, that's not what I meant.

As far as I can understand (but Ivan / Jeremy / Stasinos know better, 
and can correct me), the two options under discussion so far are the 
following:


*OPTION #1*

Define wdrs:issuedby as subproperty of both dcterms:creator and foaf:maker:

   wdrs:issuedby rdfs:subPropertyOf dcterms:creator .
   wdrs:issuedby rdfs:subPropertyOf foaf:maker .

This implies that the property extension of wdrs:issuedby is a subset of 
the property extensions of dcterms:issued and foaf:maker. From which 
follows, I guess, that the range of wdrs:issuedby is a subset of the 
intersection of the ranges of dcterms:creator and foaf:maker.

Thus, given:

   wdrs:issuedby rdf:range wdrs:Agent .

The following

   wdrs:Agent owl:unionOf ( dcterms:Agent foaf:Agent ) .

(i.e.:

   <wdrs:Agent>
     <owl:unionOf rdf:parseType="Collection">
       <owl:Class rdf:about="&foaf;Agent" />
       <owl:Class rdf:about="&dcterms;Agent" />
     </owl:unionOf>
   </wdrs:Agent>

)

does not hold. Rather, we would have:

   wdrs:Agent rdfs:subClassOf [ owl:intersectionOf ( dcterms:Agent
     foaf:Agent ) ].

(i.e.:

   <wdrs:Agent>
     <rdfs:subClassOf>
       <owl:Class>
         <owl:intersectionOf rdf:parseType="Collection">
           <owl:Class rdf:about="&foaf;Agent" />
           <owl:Class rdf:about="&dcterms;Agent" />
         </owl:intersectionOf>
       </owl:Class>
     </rdfs:subClassOf>
   </wdrs:Agent>

)

In such a case, you cannot use dcterms:creator or foaf:maker alone in a 
POWDER-S doc. This is because, according to the definition above, the 
statement

   <A> wdrs:issuedby <B> .

implies

   <A> dcterms:creator <B> .
   <A> foaf:maker <B> .

but

   <A> dcterms:creator <B> .

or

   <A> foaf:maker <B> .

or both do not necessarily imply

   <A> wdrs:issuedby <B> .

In other words:
- a person who is a foaf:maker is not necessarily a wdrs:issuedby (well, 
let's say, a wdrs:issuer)
- a person who is a dcterms:creator is not necessarily a wdrs:issuedby
- a person who is a both a foaf:maker and a dcterms:creator is not 
necessarily a wdrs:issuedby

So, by adopting this option, you can write this:

<owl:Ontology rdf:about="">
   <wdrs:issuedby>
     <wdrs:Agent>
       ...
     </wdrs:Agent>
   </wdrs:issuedby>
</owl:Ontology>

You can write also this:

<owl:Ontology rdf:about="">
   <wdrs:issuedby>
     <foaf:Agent>
       ...
     </foaf:Agent>
   </wdrs:issuedby>
</owl:Ontology>

<owl:Ontology rdf:about="">
   <wdrs:issuedby>
     <dcterms:Agent>
       ...
     </dcterms:Agent>
   </wdrs:issuedby>
</owl:Ontology>

Note that here, the foaf:Agent (dcterms:Agent) of the first (second) 
block must / is supposed to be also a dcterms:Agent (foaf:Agent).

By contrast, you cannot write:

<owl:Ontology rdf:about="">
   <foaf:maker>
     <foaf:Agent>
       ...
     </foaf:Agent>
   </foaf:maker>
</owl:Ontology>

<owl:Ontology rdf:about="">
   <dcterms:creator>
     <dcterms:Agent>
       ...
     </dcterms:Agent>
   </dcterms:Agent>
</owl:Ontology>


*OPTION #2*

wdrs:issuedby is defined as subproperty of neither dcterms:creator and 
foaf:maker, and its range (wdrs:Agent) is defined as the union of both 
dcterms:Agent and foaf:Agent.

IMHO, this corresponds more to what the range of wdrs:issuedby should be 
- i.e., a DR author does not have to be a dcterms:Agent *AND* a 
foaf:Agent: he/she can be a dcterms:Agent *OR* a foaf:Agent. It's also 
true that Dan said that dcterms:Agent and foaf:Agent denote the same 
notion [1] - so, using AND or OR would be exactly the same. But, 
currently, this is not stated in the definition of those classes, and 
thus OR is safer.

However, the problem is that there's no relationship between 
wdrs:issuedby, dcterms:creator, and foaf:maker, so the former does not 
imply the latter (or vice versa). So, we can state in the specs that 
wdrs:issuedby can be substituted by either dcterms:creator or 
foaf:maker, but we cannot specify this in the voc.


To conclude, in both cases, I'm not sure we can do without wdrs:issuedby.

As far as I can see, we can achieve what we want only by stating:

   wdrs:issuedby owl:equivalentProperty dcterms:creator .
   wdrs:issuedby owl:equivalentProperty foaf:maker .

but, as it has been said, it is preferable not to do that. Also, 
wdrs:issuedby is not really equivalent to foaf:maker.

If I said anything incorrect, or anyone sees other options, please shout.

Andrea

[1]http://lists.w3.org/Archives/Public/public-powderwg/2008Jul/0048.html
Received on Monday, 21 July 2008 12:45:29 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:42:13 GMT