Re: typed containers in RDFS: suggestions about the "long range" problem

Folks,

Please do not crosspost replies to rdf-interest and rdf-comments.

Francesco,

Please pick a list and don't cross post.

Per your suggestion, what would happen if one had a graph containing a bag 
of people and another bag of apples.

Brian


At 17:34 10/04/2003 +0200, Francesco Cannistrà wrote:
>Hi All,
>
>I wrote this mail in order to have feebacks about a possible approach to 
>solve the so called "long range" problem in the scope of core RDFS, 
>without need of other issues.
>The  "long range" problem is the inability of RDFS of providing means to 
>define typed containers, that is,  to specify, into a vocabulary schema, 
>the type of container members in cases where the range of a property is 
>structured as a container of elements (rdf:Bag, rdf:Seq and rdf:Alt).
>
>I think this is a real problem that introduces a very important issue and 
>that needs a general solution that can apply to the general RDFS domain.
>Here I won't say more about the importance of this issue. I only call the 
>attention of those who know CC/PP and UAProf (on which I work) about the 
>problems that this hole causes.
>
>I explain my approach through a practical example.
>Say I want to specify a vocabulary (hereafter referenced with the prefix 
>"voc") that defines the class voc:Group whose instances represent groups 
>of persons. Each person is a resource of  type voc:Person. For each 
>resource of type voc:Group should be asserted 2 properties: the property 
>voc:chair with value of type voc:Person and the property voc:partecipants 
>whose value is a Bag whose members should be of type voc:Person. The 
>problem is that I want the vocabulary schema to constrain the elements of 
>this Bag to be of type voc:Person.
>A RDF description instancing the vocabulary schema should look as follows:
>
>01: <?xml version="1.0"?>
>
>02: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>03:               xmlns:voc="http://example.com/exampleVocabulary.rdfs#">
>04:     <rdf:Description rdf:ID="MyGroup">
>05:         <rdf:type rdf:resource="voc:Group">
>06:         <voc:chair>
>07:             <rdf:Description rdf:ID="Francesco">
>08:                 <rdf:type 
>rdf:resource="http://example.com/exampleVocabulary.rdfs#Person" />
>09:                 <voc:name>Francesco</voc:name>
>10:                 <voc:mail>francesco@persons.com</voc:mail>
>11:             </rdf:Description>
>12:         </voc:chair>
>13;         <voc:partecipants>
>14:             <rdf:Bag>
>15:                 <rdf:_1 rdf:resource="#Francesco" />
>16:                 <rdf:_2>
>17:                     <rdf:Description rdf:ID="Daniela">
>18:                         <rdf:type 
>rdf:resource="http://example.com/exampleVocabulary.rdfs#Person" />
>19:                         <voc:name>Daniela</voc:name>
>20:                         <voc:mail>daniela@persons.com</voc:mail>
>21:                     </rdf:Description>
>22:                 </rdf:_2>
>23:                 <rdf:_3>
>24:                     <rdf:Description rdf:ID="Giovanni">
>25:                         <rdf:type 
>rdf:resource="http://example.com/exampleVocabulary.rdfs#Person" />
>26:                         <voc:name>Giovanni</voc:name>
>27:                         <voc:mail>giovanni@persons.com</voc:mail>
>28:                     </rdf:Description>
>29:                 </rdf:_3>
>30:             </rdf:Bag>
>31:         </voc:partecipants>
>32:     </rdf:Description>
>
>33: </rdf:RDF>
>
>The vocabulary schema that, I think, could solve the problem is as follows:
>
>01: <?xml version="1.0"?>
>
>02: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>03:               xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>04:               xmlns:base="http://example.com/exampleVocabulary.rdfs" >
>      <!-- ****************** The Group Type ****************** -->
>
>05:     <rdf:Description rdf:ID="Group">
>06:         <rdf:type 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
>07:         <rdf:subClassOf 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource" />
>08:     </rdf:Description>
>
>09:     <rdf:Description rdf:ID="chair">
>10:         <rdf:type 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Property" />
>11:         <rdf:domain rdf:resource="#Group" />
>12:         <rdf:range rdf:resource="#Person" />
>13:    </rdf:Description>
>
>14:     <rdf:Description rdf:ID="partecipants">
>15:         <rdf:type 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Property" />
>16:         <rdf:domain rdf:resource="#Group" />
>17:         <rdf:range rdf:resource="#PersonBag" />
>18:     </rdf:Description>
>
>      <!-- ****************** The Person Type ****************** -->
>
>19:     <rdf:Description rdf:ID="Person">
>20:         <rdf:type 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
>21:        <rdf:subClassOf 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource" />
>22:     </rdf:Description>
>
>23:     <rdf:Description rdf:ID="name">
>24:         <rdf:type 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Property" />
>25:         <rdf:domain rdf:resource="#Person" />
>26:         <rdf:range 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#http://www.w3.org/2000/01/rdf-schema#Literal" 
>/>
>27:     </rdf:Description>
>
>28:     <rdf:Description rdf:ID="mail">
>29:         <rdf:type 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Property" />
>30:         <rdf:domain rdf:resource="#Person" />
>31:         <rdf:range rdf:resource="rdfs:Literal" />
>32:     </rdf:Description>
>
>      <!-- ****************** The PersonBag Type ****************** -->
>
>33:     <rdf:Description rdf:ID="PersonBag">
>34:        <rdf:type 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
>35:         <rdf:subClassOf 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Bag" />
>36:     </rdf:Description>
>
>37:     <rdf:Description 
>rdf:about="http://www.w3.org/2000/01/rdf-schema#member">
>38:         <rdf:type 
>rdf:resource="http://www.w3.org/2000/01/rdf-schema#Property" />
>39:         <rdf:domain rdf:resource="#PersonBag" />
>40:         <rdf:range rdf:resource="#Person" />
>41:     </rdf:Description>
>
>42: </rdf:RDF>
>
>This schema example solves the "long range" problem if semantic of 
>the  schema is that one outlined below:
>
>1.   The statements throughout rows 37-41 in the schema mean that,
>       when
>         *     the property rdfs:member is asserted for a resource of type 
> voc:PersonBag (i.e. when its domain falls into a subclass of its overall 
> domain rdfs:Resource),
>       then
>         **    the range of such a property is voc:Person (i.e. its range 
> must fall into a subclass of its overall range rdfs:Resource).
>
>2.   Because
>         *     the class voc:PersonBag is defined as a "subClassOf" 
> rdf:Bag (rows 33-36),
>         **    to resources of type rdf:Bag apply properties (rdf:_1, 
> rdf:_2, etc.) that are "subPropertyOf" rdfs:member,
>       then a powerful processor may infer that
>         ***   properties rdf:_n apply to resource of type voc:PersonBag too,
>         ****  when such a property is asserted for a resource of type 
> voc:PersonBag, as a consequence of 1.** and 2.**, its range must be voc:Person.
>
>3.   When in the RDF description above (hereafter referenced with prefix 
>"desc"):
>         *      I introduce the resource desc:MyGroup of type voc:Group,
>         **    assert that desc:MyGroup has the voc:partecipants property 
> whose value is a resource of type rsd:Bag;
>       then, provided with knowledge of the vocabulary schema, my 
> processor may infer that:
>         ***   the value of the property voc:partecipants is type 
> voc:PersonBag (that is a subclass of rdf:Bag),
>         ****  in order for the RDF description to respect constraint in 
> the vocabulary schema, elements of the Bag resource (values of rdf:_n) 
> must be of type voc:Person.
>
>This seems to me as reasonable, but I have some doubts:
>
>Q1) Are rows 37-40 in the vocabulary schema valid RDF statements that 
>comply with RDFS?
>
>Q2) Are sentence 1, 2 and 3 correct?
>
>Q3) Do these sentences comply with RDFS semantics (or do they add 
>semantics out of scope of RDFS)?
>
>If the answer to these question is positive, this approach can solve, I 
>think, the "long range" problem in the scope of core RDFS, without the 
>need of demanding its solution to future RDFS extensions or to ontology 
>languages.
>
>Do you have some suggestions about this?
>I would be pleased to know your opinion in order to realize whether my 
>thoughts are valid.
>
>Regards,
>
>Francesco Cannistrà.

Received on Thursday, 10 April 2003 13:33:06 UTC