- From: Michael Kifer <kifer@cs.sunysb.edu>
- Date: Mon, 30 Apr 2007 12:59:27 -0400
- To: Sandro Hawke <sandro@w3.org>
- Cc: RIF <public-rif-wg@w3.org>
>
> > If you use symbols from the sort iri then you have a global constant. If
> > you use constants from some other sort (e.g., string or we might introduce
> > a separate sort for that) then they are local names.
> > Where do you see a problem?
>
> > > Actually, I'm inclined to put this subject on hold until we're farther
> > > along with concrete examples of RIF usage. Once we have some working
> > > RIF examples, it should be easy enough to see what difference it makes
> > > to toggle some names between global and local.
>
> Just that -- what differences will users see? Imagine someone
> developing a ruleset, and for the sake or argument assume they are
> writing directly in RIF Core. Now, there are some situations in which
> they have to decide whether to use an IRI, a local name, or (perhaps) an
> existentially quantified variable. What factors should they take into
> account in making their decision? What possible impact might their
> decision have?
>
> Or, to approach that a little differently, give me two small example
> rulesets -- one which uses local names and one which use global names
> (IRIs) -- which are good examples of when one should use one vs the
> other. (A third one, with exivars in it, assuming we added them at the
> ruleset scope, might be good, too.)
>
> I guess use whatever syntax you like (if you want to get into this now).
>
> My sense is that one uses local names and exivars much like pronouns in
> natural language, but that doesn't fit with the claim that local names
> are rigid designators.
A bNode is something like (an unknown) father of Mary:
Exists ?F father(?F,Mary).
A local name is used in a situation like the following. I may have a
database of all kinds of people with their relationships like brother, sister,
parent, etc. I might want to export only the facts that tell the outsiders
whether someone is a relative of somebody else, but not the specifics.
So, then I could have these rules:
"http://mysite.com/foo#relative"^^rif:iri(?X,?Y) :- parent(?X,?Y).
"http://mysite.com/foo#relative"^^rif:iri(?X,?Y) :- sibling(?X,?Y).
....
"http://mysite.com/foo#relative"^^iri(?X,?Y) :-
"http://mysite.com/foo#relative"^^iri(?Y,?X).
...
For parent, sibling, etc., I chose local names. They are not iris and I
don't have to worry about their names being globally unique (or even unique
within my organization). I don't need to worry that in some language that
name might be an indecent or offensive word, etc. These names are simply
invisible outside of my program and I don't need to waste time on naming
these items.
--michael
> -- Sandro
>
Received on Monday, 30 April 2007 16:59:31 UTC