- From: Frank Manola <fmanola@mitre.org>
- Date: Fri, 30 Aug 2002 17:18:33 -0400
- To: graham wideman <graham@wideman-one.com>
- CC: Brian McBride <bwm@hplb.hpl.hp.com>, www-rdf-comments@w3.org, phayes@ai.uwf.edu
graham wideman wrote:
> Frank:
>
> Again, thanks for taking the time to try to wade through this.
No problem.
>
>>But the rules don't say what you must do with this information.
>>
>
> I completely accept this. I believe it when you say that RDF does not prescribe that rdfs:domain information to be used as constraints. This is *not* the issue.
>
I know that's not the issue. When I said "the rules don't say what you
must do with this information", I was referring to *all* the information
in the expanded graph, *including* the additional triple
ex:Garfinkle rdf:type ex:Book
added by the entailment.
> The issue is that RDF docs say that rdfs:domain *may* be used by an app that wishes to use them to establish constraints. I believe that the semantics of rdfs:domain as prescibed by RDFS are such the it *cannot* be used for constraints.
>
I understand that this is the issue; I understood it the last time too,
but clearly my answer didn't convince you that I did (my bad), so I'll
try again.
The sticking point seems to be the rule rdfs2 in the Model Theory, which
says:
if E contains:
xxx aaa yyy
aaa [rdfs:domain] zzz
then add:
xxx [rdf:type] zzz
and, applying this to our example, this seems to say:
E contains:
ex:Garfinkle ex:author "John Smith"
ex:author rdfs:domain ex:Book
so we *must* add:
ex:Garfinkle rdf:type ex:Book
Emphasis above on the *must*. That is, your concern is that the rule
seems to mean that your application is *required* to conclude that
Garfinkle is a Book; and as you put it later:
"at the point where it receives "Garfinkle has an Author property", the
app is looking at an RDFS collection of facts where RDFS rules have
already concluded that Garfinkle is a Book"
(and so possibly the app can't figure out which information was
originally there and which information was added by the RDFS rules?)
Anyway, this isn't what the rule means (and it's not the way things
work). The Model Theory (I hope Pat will correct me if I'm wrong about
this) isn't saying that you necessarily actually construct this extended
graph; it's using this extended graph as a way of talking about all the
information you have available, given an RDF graph and the schema
information that describes the vocabulary used in that graph. What you
do with that information is a separate issue. However, this way of
describing things represents a particular "direction" of reasoning, and
rather than keep going along these lines, it might be better to take a
different tack, because I think the Model Theory explicitly addresses
this issue.
Specifically, Section 4.3 of the Model Theory talks about the
consequences of doing these entailments, and says the following:
"For example, one view of domain and range assertions is that they
should be viewed as *constraints* on the legality of assertions
involving a property. On this view, the rules rdfs2 and rdfs3 would be
most naturally seen as applying backwards, and rdfs2 would be better
phrased as 'If aaa [rdfs:domain] zzz, then if xxx is NOT [rdf:type] zzz,
then xxx aaa yyy is illegal', and similarly for rdfs3. However, this is
the same inference, differently phrased, as that expressed by the rule
in the table above." [Note the remainder of Section 4.3 as well].
Applying this alternative phrasing of rdfs2 to our example, the rule says:
if ex:author rdfs:domain ex:Book
then if ex:Garfinkle is NOT rdf:type ex:Book
then ex:Garfinkle ex:author "John Smith" is illegal.
I think this sounds like the kind of behavior you want, right? However,
note that the model theory says that this is *the same inference* as the
earlier one, not an *alternative* inference. Note also that the second
line says *if* ex:Garfinkle is NOT rdf:type ex:Book, then the instance
is illegal. In the instance data in the original example, we had:
ex:Garfinkle rdf:type ex:Cat
ex:Garfinkle ex:author "Fred Smith"
We have no explicit data that says that Garfinkle *isn't* a Book, and we
have no data that says that Cats can't be Books too. So if the
application takes the Schema definition
ex:author rdfs:domain ex:Book
and says that the above instance data is illegal, it must be choosing to
believe that
ex:Garfinkle is NOT rdf:type ex:Book
based on some additional assumptions, e.g., that an instance is only of
some type if the instance data explicitly says it is (and some
additional assumptions about whether, given a collection of instance
data describing some resource, like ex:Garfinkle, the application
necessarily has *all* such instance data, to exclude the possibility
that there is another triple ex:Garfinkle rdf:type ex:Book lurking
somewhere else on the Web). An application is perfectly free to choose
to believe that Garfinkle isn't a Book in this case, based on whatever
assumptions it wants to use. The point is that RDFS itself isn't making
that decision; your application has to do that. RDFS only goes as far
as saying (using the original "direction") "look, based on the
information I have here, Garfinkle must be a Book" or (using the second
"direction") "look, based on the information I have here, *if* Garfinkle
isn't a Book, there's a problem." These are different ways of saying
the same thing. Your application still has to decide what to do about
the situation.
Does this help?
--Frank
--
Frank Manola The MITRE Corporation
202 Burlington Road, MS A345 Bedford, MA 01730-1420
mailto:fmanola@mitre.org voice: 781-271-8147 FAX: 781-271-875
Received on Friday, 30 August 2002 17:08:23 UTC