[foaf-dev] PROPOSAL: Deprecate membershipClass, add memberOf
Axel Polleres
axel.polleres at deri.org
Fri May 25 19:17:50 BST 2007
Let me recap a bit lengthy, just to see whether I got this right:
foaf:membershipClass shall link a group to a class:
"The foaf:membershipClass property relates a foaf:Group to an RDF class
representing a sub-class of foaf:Agent whose instances are all the
agents that are a foaf:member of the foaf:Group."
The memebershipClass property didn't have a very well defined
semantics so far, did it? It was a mere placeholder, to keep within
OWL DL, did I understand this right?
... since e.g. directly stating that foaf:memberOf would be a
rdfs:subProperty of rdf:type (which would have a similar effect)
would kick us outside OWL DL of course... yes?
So, let's look at the definition in the current spec:
<rdf:Property rdf:about="http://xmlns.com/foaf/0.1/membershipClass"
vs:term_status="unstable" rdfs:label="membershipClass"
rdfs:comment="Indicates the class of individuals that are a member
of a Group">
<!-- maybe we should just use SPARQL or Rules, instead of trying to use
OWL here -->
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#AnnotationProperty"/>
<!-- Added to keep OWL DL from bluescreening. DON'T CROSS THE
STREAMERS, etc. -->
<!-- This may get dropped if it means non-DL tools don't expose it
as a real property.
Should be fine though; I think only OWL stuff cares about
AnnotationProperty.
Dan -->
<!-- <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Group"/>
prose only for now...-->
<!-- <rdfs:range
rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/> -->
<!-- <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Class"/> -->
<rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/>
</rdf:Property>
1) If we look at the commented out range-restrictions, this says
basically the any filler of this
property is both an rdfs-class and an *owl-class*.
Note that this is more specific than the prose text, which only mentions:
"The foaf:membershipClass property relates a foaf:Group to an RDF class"
Anyway, as you state here is one reason why defining domain and range
would kick us outside OWL DL:
From http://www.w3.org/TR/owl-ref/ :
"Annotation properties must not be used in property axioms. Thus, in OWL
DL one cannot define subproperties or domain/range constraints for
annotation properties."
2) So, what I interpret from the prose definition (please correct me if
I'm wrong!) is that this should say that:
A group of persons is related to a class, ie. that the foaf:Group
represents a class. What you really want is something like (saying it by
SPARQL as a more or less generally agreed rule syntax ;-) )
(i)
CONSTRUCT
{?X a ?C }
WHERE
{ ?X memberOf ?G
?G membershipClass ?C }
And, if I understood correctly, you also want the counterpart, ie. vice
versa:
(ii)
CONSTRUCT
{?X memberOf ?G }
WHERE
{ ?X a ?C
?G membershipClass ?C }
that is, that the class and the group are really in 1to1 relation.
3) Now let's look at Ron's proposal... He says,
"Let's replace:
?G foaf:membershipClass ?C.
with
?C rdfs:subClassOf
[ a owl:Restriction;
owl:onProperty foaf:memberOf;
owl:hasValue ?G ].
"
What are now the concequences of this one?
If something is a member of ?C, then, by the proposed rewriting of Ron,
then any member of ?C would also have a an attribute
foaf:memberOf with filler ?G ... fine, this covers (ii)
But what about (i)?
Wouldn't we also need to define:
[ a owl:Restriction;
owl:onProperty foaf:memberOf;
owl:hasValue ?G ].
rdfs:subClassOf ?C
then? ie. we get an equivalentClass in total!
?C [ a owl:Restriction;
owl:onProperty foaf:memberOf;
owl:hasValue ?G ].
owl:equivalentClass ?C .
Shame on me, I didn't check now in detail, whether this is correct
OWL/RDF syntax...
but I think (with both directions, this could be a nice way to
circumvent the OWL DL
restrictions and relate an owl:Class to a group 1to1).
Finally, as for the comment:
"<!-- maybe we should just use SPARQL or Rules, instead of trying to use
OWL here -->"
Let me emphasize that, yes, as Ron pointed out, this needs nominals,
which are, AFAIR not very well supported by DL reasoners... but well,
I also experienced already that, as soon as you want to model anything
real, doing without nominals is a real pain.
The SPARQL version would be the one above.. which equally could be
translated to any simple rule language on top of RDF/S.
just my dos centavos,
Axel
Dan Brickley wrote:
> Ron Alford wrote:
>
>> I think I've mentioned the problems with membershipClass before with the
>> standard OWL mechanisms. Thus, I'll be rather informal.
>>
>> I propose
>> 1) Deprecating foaf:membershipClass
>> 2) Creating a foaf:memberOf owl:inverseOf foaf:member.
>>
>> Group member ship can be handled in a standard way in OWL using
>> hasValue, and any property that is the inverse of foaf:member.
>> For example, take
>> <#MyGroup> foaf:membershipClass <#MyGroupMember>.
>>
>> This can be rewritten as
>> <#MyGroupMember> rdfs:subClassOf
>> [ a owl:Restriction;
>> owl:onProperty foaf:memberOf;
>> owl:hasValue <#MyGroup> ].
>>
>> Any reasoning system that can handle nominals should be able to handle
>> this. Step 2 is not strictly necessary, since any inverse of
>> foaf:member or its sub properties would do, but it would be nice as a
>> convenience.
>
>
> Could you be persuaded to write this up with some example instance data,
> for those of us whose head hurts when they think about the DL bits of
> OWL? Like describe some example people and groups. I'd like an example
> that also helped us all understand where SPARQL might fit into the
> picture, since a SPARQL query is for many, quite a nice way of finding
> all the people that match some constraint. And I won't mention RIF just
> yet :)
>
> I guess I need a nice OWL engine to explore this in. Can you recommend
> one? I just googled for "owl" and "pellet" and was rewarded with
> pictures of dissected bird crap. Roll on the Semantic Web...
>
> I guess http://pellet.owldl.com/#Download is a good place to start, and
> that I'll soon be running into the "how do we make a DL-happy profile of
> FOAF" issue too?
>
> Dan
> _______________________________________________
> foaf-dev mailing list
> foaf-dev at lists.foaf-project.org
> http://lists.foaf-project.org/mailman/listinfo/foaf-dev
>
>
--
Dr. Axel Polleres
email: axel at polleres.net url: http://www.polleres.net/
More information about the foaf-dev
mailing list