Fresnel instance and class lenses and lens specifity function

From: Emmanuel Pietriga <Emmanuel.Pietriga_at_lri.fr>
Date: Tue, 28 Jun 2005 14:23:50 +0200

For the sake of clarity, I am reverting back to the more verbose but
less ambiguous property names of classLensDomain (vs. lensDomain) and
instanceLensDomain.

> We don't assume to have rdf:type for everything and thus I think we need
> to differentiate between classes and instances even if we are using FSL.

As far as FSL is concerned, having rdf:type information or not does not
change anything. An FSL expression is never going to be interpreted the
same way a simple RDF naming selector would in the context of
instanceLensDomain, simply because it makes no sense from the FSL point
of view.

If you want to select resources based on their URI or on other
constraints, you will write expressions such as:

"*[ex:age/text() > 30 and uri(.)='http://exmaple.org']"^^fresnel:selector

If you want to select resources based on their rdf:type, you will write
expressions such as (this selects all resources which have an
rdf:type=ex:aClass):

"ex:aClass"^^fresnel:selector

And you can also mix both:
"ex:aClass[uri(.)='http:/example.org' and ...]"^^fresnel:selector

But no matter whether you put that as the object of a classLensDomain
statement or a instanceLensDomain statement, you always get the same
thing. More precisely, it makes no sense to state that this is an
instanceLensDomain or a classLensDomain.

Remember: in the end, what the selector specifies as a domain is a set
of instances. It is never a (set of) classe(s). When we consider classes
and write class-level selectors, we are actually talking about the
*instances* of those classes. Do we agree on that?

If so, I do not understand why you want to allow classLensDomain
properties with FSL expressions as their values. There is a
contradiction here. What would it mean? Let me be more specific about
what I don't understand in your proposal:

I clearly see the meaning of the following:

# lens applies to single resource whose URI is foo:bar
:lens fresnel:instanceLensDomain foo:bar

# lens applies to resources (instances) of class foo:bar
:lens fresnel:classLensDomain foo:bar

Translated to FSL selectors, we would have respectively:

# lens applies to single resource foo:bar
:lens fresnel:instanceLensDomain "*[uri(.)='foo:bar']"^^fresnel:selector

# lens applies to resources (instances) of class http://example.org
:lens fresnel:instanceLensDomain "foo:bar"^^fresnel:selector


And that is just fine. Now, what would the following mean? That is what
I do not understand.

:lens fresnel:classLensDomain "*[uri(.)='foo:bar']"^^fresnel:selector

:lens fresnel:classLensDomain "foo:bar"^^fresnel:selector



> We also might want to diplay ontolgies (meaning the class as a resource
> not its instances).

Yes indeed, but I do not see what would be the problem and why you would
need to have both classLensDomain and instanceLensDomain when using FSL
expressions as selectors. With simple RDF naming you would have:

# domain is the single resource foo:BarClass, which happens to be a
class, considered here as an instance of class rdfs:Class.
:lens fresnel:instanceLensDomain foo:BarClass

With FSL, you would have:
:lens fresnel:instanceLensDomain
"*[uri(.)='foo:BarClass']"^^fresnel:selector

You could even make sure that foo:BarClass is actually typed as an
rdfs:Class by writing:
:lens fresnel:instanceLensDomain
"rdfs:Class[uri(.)='foo:BarClass']"^^fresnel:selector



Emmanuel






> > -----Ursprüngliche Nachricht-----
> > Von: Emmanuel Pietriga [mailto:Emmanuel.Pietriga_at_lri.fr]
> > Gesendet: Dienstag, 28. Juni 2005 13:30
> > An: Chris Bizer
> > Cc: Ryan Lee
> > Betreff: Re: Reviewing the manual before we start writing the paper.
> >
> > Chris Bizer wrote:
> >
> > >> Section 2.4 :
> > >>
> > >> We have specificity sorted as follows :
> > >>
> > >> 1 Instance lens using simple RDF naming
> > >> 2 Instance lens using SPARQL
> > >> 3 Instance lens using FSL
> > >> 4 Default class lens using simple RDF naming
> > >> 5 Default class lens using SPARQL
> > >> 6 Default class lens using FSL
> > >> 7 Class lens using simple RDF naming
> > >> 8 Class lens using SPARQL
> > >> 9 Class lens using FSL
> > >>
> > >>
> > >> Which one is more specific? 1 or 9? Interpreting what is written, I
> > >> tend to think it is 1.
> > >
> > >
> > > Yes, 1
> > >
> > >> In that case I disagree. It should be:
> > >> 3 2 1 6 5 4 9 8 7
> > >>
> > >> or
> > >> 2 3 1 5 6 4 8 9 7
> > >>
> > >> For instance, an FSL selector is necessarily at least as specific as
> a
> > >> simple RDF naming selector, and in most cases it is more specific.
> > >> Considering that it makes no sense to have simple naming be more
> > >> specific than FSL.
> > >
> > >
> > > I agree for default and class lens, but not for instance lens.
> > >
> > > If I define a special lens for one single instance (the Chris Bizer
> lens
> > > which is only used to display me) then this should be the most
> specific
> > > lens.
> > >
> > >> I have no opinion on whether SPARQL is more specific than FSL or the
> > >> opposite.
> > >>
> > >
> > > Yes this is undecidable and we should just go one way.
> > > I would prefer sparql because it has more expressive conditions.
> > >
> > > So:
> > >
> > > 1 2 3 5 6 4 8 9 7
> >
> > Back to this issue: taking a higher-level view of this whole issue,
> > here's what I think. I take the example of lens domain, but it also
> > applies to formatDomain.
> >
> > We introduced both lensDomain and instanceLensDomain because we needed
> > to disambiguate whether the following example lens:
> >
> > :lens fresnel:lensDomain foaf:Person
> >
> > was to be applied to resources of class foaf:Person or to the single
> > resource whose URI is foaf:Person. No more discussion about the
> > usefulness of having both lensDomain and instanceLensDomain. We all
> > agree that we keep them.
> >
> > But one thing that we seem to have lost track of is the purpose of this
> > differentiation, which I stated above (the disambiguation). Considering
> > this purpose, it is only necessary to make the difference between the
> > two when we use simple RDF naming for the selector. It makes no sense
> > for FSL. Because in FSL, we would have:
> >
> > # domain is the single resource whose URI is foaf:Person
> > :lens fresnel:lensDomain "*[uri(.)='foaf:Person']"^^fresnel:selector.
> >
> > # domain is the resources who belong to class foaf:Person
> > :lens fresnel:lensDomain "foaf:Person"^^fresnel:selector.
> > # which can also be written as
> > :lens fresnel:lensDomain "*[rdf:type/foaf:Person]"^^fresnel:selector.
> >
> >
> > As I said before, we don't have anything such as a class lens or an
> > instance lens. We have lenses that select instances, either by
> > specifying their class or their URI (or other constraints). This
> > probably played a role in this confusion.
> >
> > My point is that 4 5 6 do not actually exist. 7 8 9 neither. We only
> > have lenses whose domain is specified with a simple selector, or an fsl
> > expression, or a sparql query. And in the case of simple selectors, we
> > need a mechanism to disambiguate what the URI given as the domain value
> > represents: URI of instance to select, or class of instance to select.
> > But that's all.
> >
> > If that is okay with you, I'll go through the manual and try to make
> > this clear. Unless you disagree.
> >
> >
> > --
> > Emmanuel Pietriga
> > INRIA Futurs - Projet In Situ tel : +33 1 69 15 34 66
> > Bat 490, Université Paris-Sud fax : +33 1 69 15 65 86
> > 91405 ORSAY Cedex FRANCE http://www.lri.fr/~pietriga
Received on Tue Jun 28 2005 - 12:21:20 EDT

This archive was generated by hypermail 2.3.0 : Thu Aug 09 2012 - 16:40:51 EDT