W3C home > Mailing lists > Public > semantic-web@w3.org > August 2007

Re: RDF 2.0 proposal: contextual properties

From: Garret Wilson <garret@globalmentor.com>
Date: Wed, 08 Aug 2007 09:15:09 -0700
Message-ID: <46B9EC0D.7040803@globalmentor.com>
To: Bruce D'Arcus <bdarcus@gmail.com>
CC: Ivan Herman <ivan@w3.org>, Semantic Web <semantic-web@w3.org>

Bruce,

Your other suggestions for RDF Vista ;) are nice as well (although I 
would have a few clarification questions about dumping reification), so 
I'll skip back to how contextual properties would help vCard, below.

Bruce D'Arcus wrote:
>
> I think it'd also make sense to add named graph support to RDF/XML; 
> namely, an rdf:about attribute to the root rdf:RDF node (though should 
> probably be changed to rdf:graph).

Whoa! I hesitate to contemplate the implications of this, or where you 
would are wanting to go here. I could imagine named sub-graphs---would 
this lead to topic-map type scopes (something I'm not up to speed on)? 
http://www.topicmaps.org/xtm/index.html#desc-scope Well, any named graph 
by definition is a named sub-graph, so I perhaps one use of this would 
be contextual properties. Wow, this is a huge topic in itself. And I 
thought I came up with controversial topics. ;) Interesting, nonetheless.

>
> Finally, I've often seen suggestions we need support for provenance 
> and time baked into the model (who made a statement, and when is it 
> valid) beyond named graphs. That seems like it might be a good idea.

Ah, http://www.ninebynine.org/RDFNotes/UsingContextsWithRDF.html .

See, you're going way beyond what I'm proposing! Both named subgraphs 
and provenance are actually supersets of contextual property 
functionality. Sure, if you want to go there it will solve my problems 
as well...

>
> A lot of the examples you're presenting just don't rise to the level 
> of the above for me.

Like I said---you're proposing a huge superset of what I proposed. I was 
trying to pick low-hanging grapes.


> I don't really think your vCard example with telephone numbers and 
> names makes your case for contextual properties, for example. To 
> really model it the way you want to model it suggests you actually 
> model context yourself.
>
> <http://ex.net/1> a vcard:VCard ;
>     vx:context <http://ex.net/2> ;
>     vx:context <http://ex.net/3> .
>
> <http://ex.net/2> a context:Home ;
>     vcard:telephone tel:13-49813-94831 .
>
> <http://ex.net/3> a context:Work ;
>     vcard:telephone tel:11084-093184931 .
>
> Is there any reason that's not adequate and *requires* changing the 
> RDF model to get around?

The above doesn't say what I'm wanting to, and it winds up with the same 
problem we had before: you're going to have to create as many context 
*types* as you would contextual properties, and it doesn't even relate 
those properties to the thing being described (the telephone number). 
Let me put this more concretely. (Note that I'm also following TBL's 
suggestion to talk in terms of describing a foaf:Person rather than some 
abstract vcard:VCard.)

<foaf:Person rdf:about="http://example.com/person/John">
  <vcard:tel>
    <rdf:Description rdf:about="tel:+1-123-456-7890">
      <vcard:telType>home</vcard:telType>
      <vcard:telType>fax</vcard:telType>
      <vcard:preferred>true</vcard:preferred>
    </rdf:Description>
  </vcard:tel>
</foaf:Person>

<foaf:Person rdf:about="http://example.com/person/Jane">
  <vcard:tel>
    <rdf:Description rdf:about="tel:+1-123-456-7890">
      <vcard:telType>work</vcard:telType>
      <vcard:telType>fax</vcard:telType>
    </rdf:Description>
  </vcard:tel>
</foaf:Person>

Obviously when these statements get incorporated into the same graph, it 
says that <tel:+1-123-456-7890> is a work number (but really it's not a 
work number for John), and that the number is preferred (but really it's 
not preferred for Jane).

If you had named subgraphs that were somehow separated (scope), that 
would take care of this; your suggestion of provenance would also cover 
this (e.g. "John considers <tel:+1-123-456-7890> his home telephone 
number.") But both of those are going *way* beyond what I was proposing. 
But if you want to go there, I'll follow along. I was just wanted 
something I could use sooner than later... :)

My proposal would characterize the first 
"<vcard:telType>home</vcard:telType>" above like this:

<foaf:Person rdf:about="http://example.com/person/John">
   <rdf:context>
    <rdf:Statement>
      <rdf:of rdf:resource="&vcard;tel/>
      <rdf:subject rdf:resource="tel:+1-123-456-7890"/>
      <rdf:predicate rdf:resource="&vcard;telType/>
      <rdf:object>home</rdf:object>
    </rdf:Statement>
   </rdf:context>
</foaf:Person>

The semantics of rdf:context and rdf:of would say the exact same thing 
as giving <tel:+1-123-456-7890> a vcard:telType of "home"---but only in 
the context when <tel:+1-123-456-7890> is the vcard:tel of 
<http://example.com/person/John>. Querying would be done as 
normal---it's just that if you wanted to query for a contextual 
property, you'd need to also supply the contextual subject and 
contextual predicate in order to discover those properties.

Note also that usually, if John has several phone numbers and Jane has 
several phone numbers, they usually have different orders of importance 
for those phone numbers---and suddenly we're back into the rdf:List 
debate. (Should we make every property value an rdf:List?) You'll note 
that the indirection involved with rdf:List is really just a way of 
externally imposing an order on resources without actually adding 
properties to those resources. This problem is solved if we simply have 
an rdf:order property that is contextual, like this:

<foaf:Person rdf:about="http://example.com/person/John">
  <vcard:tel>
    <rdf:Description rdf:about="tel:+1-123-456-8888" rdf:order="1"/>
    <rdf:Description rdf:about="tel:+1-123-456-9999" rdf:order="2"/>
  </vcard:tel>
</foaf:Person>

<foaf:Person rdf:about="http://example.com/person/Jane">
  <vcard:tel>
    <rdf:Description rdf:about="tel:+1-123-456-8888" rdf:order="2"/>
    <rdf:Description rdf:about="tel:+1-123-456-9999" rdf:order="1"/>
  </vcard:tel>
</foaf:Person>

As long as rdf:order is considered contextual to the vcard:tel 
relationship between the foaf:Person and the telephone number, each 
person could have in essence its own "list" of telephone numbers---yet 
each telephone number could be queried just as a normal property in 
current RDF.

Garret
Received on Wednesday, 8 August 2007 16:15:40 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 21:45:17 GMT