- From: Kingsley Idehen <kidehen@openlinksw.com>
- Date: Wed, 26 Nov 2014 11:00:20 -0500
- To: public-hydra@w3.org
- Message-ID: <5475F914.8070707@openlinksw.com>
On 11/26/14 10:29 AM, tomasz@t-code.pl wrote: > Hi Holger > > I've also been thinking about using SPIN on the client. In addition to constraint validation I was also thinking about using spin:constructor to allow the client to initialize a state of a new resource. Even better the server can hand out "personalized" CONSTRUCTS to individual clients. I think SPIN on clients can be a best so far realization Roy Fielding's Code-on-demand REST contraint. > > But please correct me if I'm wrong, AFAIK executing SPARQL is necessary but it's not enough to fully appreciate SPIN. And it's a shame that after all those years TopBraid's is probably the sole SPIN implementation. At least I haven't seen any other yet. > > Sorry for going off topic here anyway... > > Tom Tom We (OpenLink Software) are co-sponsors and supporters of SPIN. It will be supported in Virtuoso as part of our SPARQL VIEWs endeavor. Workload has perpetually delayed this implementation, but its coming for sure. A Javascript based RDF data manager with SPIN support is also a major piece of the puzzle re. smart actionable webby-payloads (based relation semantics expressed using RDF) . Kingsley > > November 25 2014 2:23 AM, "Holger Knublauch" <holger@topquadrant.com> 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. >> >> >> Cheers, >> Holger > > > -- 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 Wednesday, 26 November 2014 16:00:46 UTC