- From: Holger Knublauch <holger@topquadrant.com>
- Date: Sun, 31 May 2015 15:14:28 +1000
- To: RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
Thinking a bit more about JavaScript support for SHACL, I believe the
following syntax would be quite attractive and is easy to implement:
ex:MyShape
sh:constraint [
sh:message "The URL {?value} cannot be resolved for {?predicate}" ;
sh:predicate ex:imageURL ;
sh:jsExpression "helper.isResolvableMedia(value)" ;
sh:jsLibrary "http://example.org/helper.js" ;
] .
If a constraint has a sh:jsExpression, then the system would walk
through all values of the provided sh:predicate and invoke
sh:jsExpression with the given object pre-assigned to the JavaScript
variable "value". The example above would call a helper function, but
this could be any JavaScript snippet that returns a boolean result. If
false, a constraint violation is produced using the sh:message template.
sh:jsLibrary would point at a required JavaScript file that the engine
needs to use. I implemented something very similar with SPINx [1] and it
works quite well with embedded JavaScript APIs such as Mozilla Rhino
[2]. The example above could of course also be turned into a SHACL
template, so that the actual JavaScript details get hidden, and people
just instantiate
ex:MyShape
sh:constraint [
a lib:ResolvableMediaConstraint ;
lib:predicate ex:imageURL ;
] .
This approach could be in addition to the JSON-LD approach suggested by
Arthur (which has higher implementation costs but is more general).
Maybe the IBM people who championed this topic could provide feedback.
In general I believe we have an immense opportunity here to create
something that could propel Semantic Technology into much more
mainstream use cases, as a schema language for JavaScript applications,
and servers using JSON for data exchange and interface definitions.
JavaScript also covers additional use cases that cannot be expressed in
SPARQL.
Thanks
Holger
[1] http://spinrdf.org/spinx.html
[2] https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino
On 5/30/2015 11:48, RDF Data Shapes Working Group Issue Tracker wrote:
> shapes-ISSUE-60 (Other Extension Languages): Shall SHACL support other extension languages beside SPARQL (like JavaScript)? [SHACL Spec]
>
> http://www.w3.org/2014/data-shapes/track/issues/60
>
> Raised by: Holger Knublauch
> On product: SHACL Spec
>
> We have frequently discussed that there could be other extension languages beside SPARQL, but I don't think we ever formally closed this topic. The current spec would allow other languages such as JavaScript, identified through some property such as shjs:js. My impression from discussions in the WG was that most people would be in favour of allowing this flexibility, but I believe Peter was against that. In any case, we need a resolution.
>
> Once we do that, we could discuss whether we also want to do a JavaScript deliverable as part of the WG, but that would be a separate ticket.
>
>
>
Received on Sunday, 31 May 2015 05:16:41 UTC