[rdfweb-dev] FOAF spec updated, 'Pages about Things' Edition
(2005-07-27); isPrimaryTopicOf; OWL-DL compatibility edits.
danbri at w3.org
Wed Jul 27 22:20:48 UTC 2005
http://xmlns.com/foaf/0.1/ is updated
Two main changes...
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
<!-- etc etc -->
...allowing apps to infer that we're talking about the same person, if
data uses the same well known URI(s). This is particularly useful for
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
world, and are of debatable value since FOAF instance data so frequently
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
for backwards compatibility.
* I've added types (AnnotationProperty, ObjectProperty, DatatypeProperty)
* I suppressed range/domain on membershipClass and called it an
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
intent behind the vocabulary; the word 'resource' is a curse anyway...).
The main outstanding issue is that several FOAF properties are
are owl:DatatypeProperty), yet are used in the FOAF community for data
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
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
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
FOAF namespace. I've drafted such a thing here:
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
from the namespace URI).
Will this break anyone's code? We're talking about 17 RDF statements.
They claim that various text-valued properties are inverse functional
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,
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,
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:
(and for the other similar properties); relatedly, that
"http://xmlns.com/foaf/0.1/icqChatID used as ObjectProperty and
* 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
I've got some other TODOs on the spec to address, but I thought I'd get
there first. The OWL checker found a bunch of other bugs too, which I'm
glad to have fixed (some typo'd URLs when subclassing from external
More information about the foaf-dev