[rdfweb-dev] FOAF spec updated, 'Pages about Things' Edition (2005-07-27); isPrimaryTopicOf; OWL-DL compatibility edits.

Dan Brickley danbri at w3.org
Wed Jul 27 22:20:48 UTC 2005


http://xmlns.com/foaf/0.1/ is updated

Two main changes...

1. isPrimaryTopicOf

I've added (as long planned per IRC meetings) an inverse
of primaryTopic called isPrimaryTopicOf. This is a convenience
to encourage the easy use of pages such as wikipedia entries
when trying to join together info about things that are awkward
to identify.

eg.
<Person>
 <isPrimaryTopicOf 
rdf:resource="http://en.wikipedia.org/wiki/Julius_Caesar"/>
 <isPrimaryTopicOf 
rdf:resource="http://www.nndb.com/people/783/000044651/"/>
 <depiction 
rdf:resource="http://upload.wikimedia.org/wikipedia/en/thumb/1/12/Julius_caesar.jpg/150px-Julius_caesar.jpg"/>
 <!-- etc etc -->
</Person>

...allowing apps to infer that we're talking about the same person, if 
other
data uses the same well known URI(s). This is particularly useful for 
talking about
famous figures who don't have homepages and weblogs, but has other uses too.


2. OWL-DL compatibility

I've made a lot of changes to nudge us towards compatibility with OWL DL
(currently we are an OWL Full vocabulary). These mostly don't affect the 
outside
world, and are of debatable value since FOAF instance data so frequently 
uses other
non-DL vocabs like Dublin Core. But I thought I'd have a go. The 
challenge is to
get things so that non-OWL RDF/S tools can understand the schema, as 
well as OWL DL.

* I've added a some extra rdf:type=owl:Class declarations, while still 
using rdfs:Class
   for backwards compatibility.
* I've added types (AnnotationProperty, ObjectProperty, DatatypeProperty)
* I suppressed range/domain on membershipClass and called it an 
AnnotationProperty,
   and also labelled DC terms as annotational (this is a bit of a hack, 
but doesn't hurt).
 * I now write owl:Thing instead of rdfs:Resource (the former captures 
better the
   intent behind the vocabulary; the word 'resource' is a curse anyway...).

The main outstanding issue is that several FOAF properties are 
literal-valued (ie.
are owl:DatatypeProperty), yet are used in the FOAF community for data 
merging.
OWL DL doesn't like this.

The other issue is that we say foaf:name rdfs:subPropertyOf rdfs:label 
--- this linking
between different types of property (OWL considers rdfs:label to be 
purely annotational)
is frowned upon.

I'd like to see discussion on both points. Here is a suggested account:

 * we want to merge on foaf:aimChatID, foaf:mbox_sha1sum, etc
 * we were doing this kind of merging before OWL existed, and will 
continue as
    followup technologies (eg. RDF Rule languages) evolve
 * the rules around xml:lang in RDF plain literals means that
   the OWL:InverseFunctionalProperty are only a partial match for us. We'd
   want to merge based on <aimChatID xml:lang="en">danbri2002</aimChatID>
   matching <aimChatID>danbri2002</aimChatID> anyhow.
 * various OWL DL tools won't load the core FOAF schema currently
 * non-DL OWL/RDF tools are often more Web-oriented, and happy to load
   and crawl data from a variety of sources

I suggest we consider breaking out the bits that make DL unhappy,
and put them in a separate RDF document that is rdfs:seeAlso linked from 
the
FOAF namespace. I've drafted such a thing here:

  http://xmlns.com/foaf/0.1/fullfoaf.rdf

This complements the full RDFS/OWL definitions, which could be
trimmed to be more DL-friendly.

The core stuff is http://xmlns.com/foaf/0.1/index.rdf (also 
content-negotiable
from the namespace URI).

Question...

Will this break anyone's code? We're talking about 17 RDF statements.

They claim that various text-valued properties are inverse functional 
(this could
break smushers who read the OWL statements before deciding what
nodes to merge). Also that foaf:name is a subPropertyOf rdfs:label (this
could break generic browsers who use this as a UI hint,
eg http://www.xml.com/pub/a/2003/02/05/brownsauce.html
 
In both cases, breakage could be avoided simply by loading the file
http://xmlns.com/foaf/0.1/fullfoaf.rdf alongside the core RDFS/OWL spec.

Thanks btw to Ian Davis who helped out in IRC, 
http://www.ilrt.bris.ac.uk/discovery/chatlogs/swig/2005-07-27#T22-13-18

I was testing with http://phoebus.cs.man.ac.uk:9999/OWL/Validator as I had
trouble with Pellet online version, but apparently Swoop found the same
issues. It currently complains that,

* "Data Properties cannot be inverse functional: 
http://xmlns.com/foaf/0.1/icqChatID"
(and for the other similar properties); relatedly, that
"http://xmlns.com/foaf/0.1/icqChatID used as ObjectProperty and 
DataProperty".

 * http://xmlns.com/foaf/0.1/name rdfs:subPropertyOf
http://www.w3.org/2000/01/rdf-schema#label. Only allowed between two 
DatatypeProperties or ObjectProperties.

 * also that rdfs:Literal is both untyped and redefined -- not sure 
what's going
  on there.



I've got some other TODOs on the spec to address, but I thought I'd get 
this out
there first. The OWL checker found a bunch of other bugs too, which I'm 
very
glad to have fixed (some typo'd URLs when subclassing from external 
schemas, etc).

cheers,

Dan







More information about the foaf-dev mailing list