- From: Kingsley Idehen <kidehen@openlinksw.com>
- Date: Tue, 25 Nov 2014 11:55:01 -0500
- To: public-hydra@w3.org
- Message-ID: <5474B465.8010603@openlinksw.com>
On 11/24/14 8:20 PM, Holger Knublauch wrote:
> On 11/25/2014 8:23, Markus Lanthaler wrote:
>> On 19 Nov 2014 at 06:34, Holger Knublauch wrote:
>>> I also believe that Hydra clients could benefit from the ability to
>>> handle additional constraints, e.g. to validate user input on forms
>>> such
>>> that startDate must be before endDate. From how I understand Ruben's
>> Definitely but the question (and I think the Data Shapes WG will face
>> the
>> same) is where to draw the line. It also depends a lot on what the
>> primary
>> use case for a technology is. For Hydra it is the description of Web
>> APIs to
>> allow smarter (semi-)automated clients. If something doesn't provide
>> clear
>> advantages for that, it is more or less out of scope - at least for the
>> Hydra Core Vocabulary. The example you describe above illustrates
>> this quite
>> nicely. Being able to specify that a startDate must be before an
>> endDate is
>> quite straightforward, but will that (without lots of other
>> knowledge) help
>> an automated *client*? Probably not that much. The story obviously looks
>> much different if the intention is to use this information to render
>> a UI
>> that is then operated by a human (but humans are actually smart
>> enough to
>> understand this "relationship" without a lot of additional metadata).
>
> I think it will be perfectly possible to automatically verify checks
> such as endDate > startDate on a JavaScript client. Here is how it
> would work:
>
> 1) Client receives a resource in JSON-LD and wants to display an edit
> form
> 2) ... looks up the rdf:type/@type of that resource: schema:Event
> 3) Client can look up the definition of schema:Event and will learn
> (in .ttl)
>
> schema:Event
> a rdfs:Class ;
> spin:constraint [
> a shape:OrderedPropertyPairConstraint ;
> arg:property1 schema:startDate ;
> arg:property2 schema:endDate ;
> ] ; ...
>
> 4) If that shape:OrderedPropertyPairConstraint is widely agreed to
> represent things such as startDate < endDate then the client can
> display that info to the end user as annotations to the form, and
> check this info in the input fields.
>
> 5) If however the client doesn't know anything about
> shape:OrderedPropertyPairConstraint, it can go the web and look up its
> definition, which would be something like
>
> shape:OrderedPropertyPairConstraint
> a spin:PropertyPairConstraint ;
> spin:constraint [
> a spl:Argument ;
> spl:predicate arg:property1 ;
> spl:valueType rdf:Property ;
> ] ;
> spin:constraint [
> a spl:Argument ;
> spl:predicate arg:property2 ;
> spl:valueType rdf:Property ;
> ] ;
> spin:body [
> sp:text """
> ASK WHERE {
> ?this ?property1 ?v1 .
> ?this ?property2 ?v2 .
> FILTER (?v2 <= ?v1) .
> }
> """
> ] ;
>
> etc. which provides detailed instructions for a *generic* client on
> which SPARQL query to execute to verify that the current instance
> (?this) fulfills its constraints. This means that if a client-side
> SPARQL engine exists, and the input form provides data binding with a
> client-side Graph model, then the client can understand constraint
> templates that it has never seen before.
>
>>
>>
>>> work, it is probably only a matter of time before there is a SPARQL
>>> engine implemented in JavaScript, and this would mean that clients
>>> could
>>> process complex SPIN constraints.
>> What kind of clients do you have in mind? Browser-like clients or
>> (semi-)automated ones?
>
> See above.
>
>> From the discussions we had on this list in the past, there would be
>> huge
>> interest for something like that. I personally see heaps of
>> applications for
>> that. I do not think that such "advanced features" belong in the
>> Hydra Core
>> Vocabulary but I would fully support the creation of other, specialized
>> vocabularies to support this functionality. That being said, people
>> could of
>> course also simply use SPIN for this. Do you have a simple prototype
>> (web
>> app) that leverages this?
>
> We use SPIN server-side only, as part of the SPARQL Web Pages
> infrastructure that we use in all TopBraid products. For example, this
> validates a form when the user hits enter. A client-side version of
> that should work as described above, assuming that a JavaScript SPARQL
> engine exists.
And in rdfstore.js [1] you have such an engine. Next step, testing it
out on the aforementioned engine :)
[1] https://github.com/antoniogarrote/rdfstore-js
--
Regards,
Kingsley Idehen
Founder & CEO
OpenLink Software
Company Web: http://www.openlinksw.com
Personal Weblog 1: http://kidehen.blogspot.com
Personal Weblog 2: http://www.openlinksw.com/blog/~kidehen
Twitter Profile: https://twitter.com/kidehen
Google+ Profile: https://plus.google.com/+KingsleyIdehen/about
LinkedIn Profile: http://www.linkedin.com/in/kidehen
Personal WebID: http://kingsley.idehen.net/dataspace/person/kidehen#this
Attachments
- application/pkcs7-signature attachment: S/MIME Cryptographic Signature
Received on Tuesday, 25 November 2014 16:55:27 UTC