RE: concerns about hydra:mappings (ISSUE-30)

On Monday, February 17, 2014 7:53 PM, Ruben Verborgh wrote:
> >> Basically, we have the choice between:
> >> a) the subjects are the elements of the collection ("Actor")
> >> b) the subjects are "related" to the elements of the collection
> >> ("Movie starring actor") Clearly, a) is most strictly defined;
> >> and b) is so loosely defined that we basically cannot infer
> anything.

[...]

> >> This is why I'm strongly in favor of a).
> >
> > How would you, e.g., realize a full-text query using a)?
> 
> hydra:freetextQuery.

What does that mean? Map a IRI template variable to hydra:freetextQuery? No
subject would have that property so a) wouldn't work, but probably you mean
something else anyway.


> or
> 
> [ a hydra:SupportedProperty; hydra:property foaf:name; hydra:valueType
> hydra:freetextQuery ].

And if it were to look at all properties and not just foaf:name?


> > from a resource representation (aka document) POV it does
> > make a lot of sense, IMO anyway. You query the representations based on
> > property-value pairs and return the URLs that can be used to retrieve
those
> > representations. You look at it more from an RDF point of view in which
you
> > just look at the resources themselves in an (I would argue) abstract
manner.
> > Both have value depending on what you are trying to achieve and as you
say
> > it is possible to have both.
> 
> I'm not sure I fully see the two different viewpoints.
> Could you perhaps elaborate on what they are (when you have time)?

Maybe showing it based on the movie example suffices. Assume we have two
actors, Hanks and Hilton :-) Both would be referenced from a Hydra
collection:

  <> hydra:member </hanks> , </hilton> .

If you go and look up /hanks you would get something like

  </hanks> foaf:name "Tom Hanks" ;
           ex:movies </forrest-gump> .
  </forrest-gump> ex:blockbuster true .

Dereferencing /hilton yields

  </hilton> foaf:name "Paris Hilton" ;
            ex:movies </house-of-wax> .
  </house-of-wax> ex:blockbuster false .

Please note that Hilton's blockbuster isn't included here :-)

Now we could go back to the collection and define

  <> hydra:search [
    hydra:template "?blockbuster={blockbuster}" ;
    hydra:mapping [
      hydra:variable "blockbuster" ;
      hydra:property ex:blockbuster ;
    ]
  ]

The result of dereferencing /?blockbuster=true could now be defined to be
(document POV)

 </?blockbuster=true> hydra:member </hanks> .

Because if you'd go and dereference /hanks you would find a property-value
pair ex:blockbuster true (even though it's subject isn't /hanks).
That's similar to how Elasticsearch would, e.g., by default look at all
"blockbuster" JSON properties and not just on the ones of the top-level
object. 

I find that to be quite useful but I also see how you probably would like to
restrict it in certain scenarios as you suggested.


Does this clarify it? Does it make any sense to you?



--
Markus Lanthaler
@markuslanthaler

Received on Monday, 17 February 2014 20:34:19 UTC