RDF Data Shapes Working Group Teleconference

19 May 2015


See also: IRC log


Arnaud, Arthur, Dimitris, Eric, Holger, Harold, Iovka, Jose, Karen, Peter, Michel, Simon
aryman, kcoyle


<Arnaud> hi there

<Arnaud> beware, we couldn't get Zakim for this meeting

<Arnaud> and we have to use WebEx

<Arnaud> we will use IRC for logging and queueing as usual

<Arnaud> but for voice we use webex

<Arnaud> that won't work peter

<pfps> grrr

<Arnaud> zakim doesn't know anything about webex

<pfps> the host has *ultimate* control on WebEx, and everyone else has squat

<Arnaud> are you on webex peter?

<Arnaud> I see one "Call-in User_3"

<pfps> Which webex?

<pfps> which web interface??

<Dimitris> http://www.webex.com/

<Dimitris> and click join

<kcoyle> https://mit.webex.com/mw0401lsp13/mywebex/default.do?siteurl=mit

<pfps> the web interface wasn't in the email from Eric and thus I didn't put it on the meeting page

<kcoyle> and you can use the audio there, no need to phone in

<kcoyle> no, it wasn't in eric's email -- i sent a follow-up mail

<kcoyle> hsolbrig: log on to https://mit.webex.com/mw0401lsp13/mywebex/default.do?siteurl=mit

<pfps> WebEx is *not* very Linux compatible

<Dimitris> pfps, it doesn't work from Linux, but there is an android app that works very well

<pfps> That's astonishing - WebEx audio is known to be problematic

<pfps> Screen sharing can require *lots* of bandwidth, which may not be possible for all

<Arnaud> scribenick: aryman

<pfps> but no muting from IRC using Zakim

<kcoyle> aryman: I think we're getting feedback from you - can you mute?

@kcoyle I muted. Is that better?

<kcoyle> aryman: yes, thx

<Arnaud> http://www.w3.org/2015/Talks/0519-shacl-egp/

ShEx proposal deep-dive

<pfps> Why all the marketing stuff? I was expecting something technical.

ericP is presenting the ShEx/SHACL deep dive

<hsolbrig> slide 7

<iovka> sorry, I thought I was muted

<pfps> BNF is your friend

pfps: the ShEx language in this presentation does not match the language in the semantics document

iovka: yes, there are some differences

pfps: in the presentation, value class and conjunction appear to be missing

<ericP> http://www.w3.org/2005/01/yacker/uploads/ShEx2?lang=perl&markup=html#prod-ShEx2-tripleConstraint

ericP: conjunction is not part of a triple constraint, but appears elsewhere

<pfps> conjunction is in the valueClass position

pfps: I am concerned that the syntax is different than the published semantics

detailed discussion of semantics

moving on to discussion of closed shapes

<pfps> A big difference between the presentation and the language in the semantics is that the semantics permits negated shapes whereas the presentation has negated tripleConstraints

Arnaud: how are shapes associated with data?

ericP: two mechanisms 1) the data points to shape, e.g. instanceShape, classShape, 2) defined by the application (uses XSD and WSDL analogy)

<ericP> http://w3c.github.io/data-shapes/data-shapes-primer/#h-associations

<pfps> What is the contract between the semantics and the semantic actions?

What about backtracking? Are actions undone?

iovka: in the semantics doc, semantic actions have no side effects

ericP: in addition we can use semantic actions with side effects
... we don't have semantics for actions with side effects

pfps: if no semantics for side effects, then it is out of scope

one sec

can't find the window!!

go on

found it!

may I ask?

<Arnaud> let him finish that slide and we'll get to you

<pfps> The semantics (now) needs multiple models, so determining whether to call an action with side effects becomes very problematic

aryman: semantic actions with side effects is useful, e.g. to generate code, but we need deterministic semantics, e.g. like ANTLR

ericP: our implementation does this in two passes, first generating a tree of recognized triples, second traversing the tree depth first

<pfps> I don't believe either of the examples work in the semantics, which gives the interface to the semantic extensions in terms of three arguments, graph, focus node, and language

<iovka> the focus node is linked to ?this

<pfps> The examples include other variables that do not seem to be free

<iovka> I think that usually eric uses ?o for the focus node, and in the second example on slide 18 he mixed ?o and ?this, which both stand for the focus node

<iovka> sorry, I'm wrong !

<Arnaud> the question is when is the semantics doc going to be stable?

aryman: when will your semantics doc be frozen so we can review it in detail?

iovka: will announce the version when it is ready for review

<ericP> ACTION: iovka to announce a stable version of the semantics document so we can have a review cycle [recorded in http://www.w3.org/2015/05/19-shapes-minutes.html#action01]

<trackbot> Created ACTION-25 - Announce a stable version of the semantics document so we can have a review cycle [on Iovka Boneva - due 2015-05-26].

How does ShEx compile to SPARQL?

pfps: Is every aspect of ShEx compilable to SPARQL?

ericP: Not if valueShape is present

pfps: How can you assure the translation to SPARQL is correct?

ericP: Just wrote some test cases. Is it possible?

pfps: There is some work on translating OWL constraints to SPARQL

iovka: Without recursion, ShEx can be translated to SPARQL
... We could potentially prove the translation is correct

<pfps> The treatment of negation in the semantics does not appear to have an obvious translation into SPARQL.

ericP: iovka has done some analysis of complexity

iovka discusses some complexity results

<pfps> How is VIRTUAL handled in the semantics?

Take a 15 minute break now

Resume at 10:50 AM

<ericP> karen, i just updated the title of http://www.w3.org/2015/Talks/0519-shacl-egp/#(22) to clarify that it was for your 2nd use case

<hknublau> http://www.slideshare.net/HolgerKnublauch/shacl-specification-draft

<simonstey> +1

<iovka> +!

<iovka> +1

Holger's proposal deep-dive

Does the prototype depend on TBC?

<kcoyle> aryman: you need to mute - we get echo from you

<kcoyle> aryman: sorry

hknublau: the prototype includes a stand-alone SHACL engine based on the Jena API, also an editor in TBC

<iovka> +q

<iovka> -q

<Arnaud> sorry iovka, if I missed your request in a timely manner!

valueShape appears to be missing from slide 25

<hsolbrig> Apologies for having leave. Have to catch a plane. Fascinating talk, Holger and I want to pursue it further...

I see valueShape in Slide 26 in sh:PropertyConstraint

Shouldn't NativeConstraint be language neutral?

i.e have subclasses for SPARQL, JS.

<iovka> +q

hknublau: NativeConstraint can have more than one language, all being equivalent, the engine picks the language it supports

iovka: how do you ensure that alternate language strings are equivalent

hknublau: it is the responsibility of the constraint author to write equivalent definitions

Arnaud: this is a general problem with extensions

hknublau: we only defines SPARQL since there is no API for JS

why not use JSON-LD

<pfps> Arthur is talking about the JSON encoding of SPARQL results, I think.

also use SPARQL JSON result format for output

Both, use JSON-LD as the input, use SPARQL JSON Result format for the output

pfps: If there are two defs, which one is the "controlling" def?

<iovka> +q

<pfps> holger: the SPARQL one

hklunblau: I suggest use SPARQL of the controlling def

s /of/as/

iovka: Do you have SPARQL defs for all features?

hknublau: Yes

<iovka> +q

What about security? For third-party templates?

Arnaud: Please explain why other W3C languages are "not designed for the Web"?

hknublau: Languages should have open vocabularies with defs associated with downloadable URIs

<Zakim> ericP, you wanted to ask, per iovka's q, is there a defn for valueShape?

<ericP> hasShape algorithm

ericP: discusses recursion and negation - does this proposal handle it correctly?

Arnaud: let's defer this general question and focus on clarification questions for Holger

hknublau: I haven't made much use of recursion. I can put in a guard to prevent it. Can add negation.

<ericP> aryman: if we allow 3rd party to provide javascript, that entails a security issue.

<ericP> ... we need to have some trust mechanism for 3rd part extensions, or a sandbox mode

What about safety of third-party extensions?

hknublau: This is out of scope currently

Break for lunch

Resume at 1:00 PM

<iovka> quit

<kcoyle> scribenick: kcoyle

<pfps> My presentation is https://www.w3.org/2014/data-shapes/wiki/Shacl-sparql-presentation

similar to Holger's proposal; based on sparql, but is even closer to sparql

every constraint is translated to a single sparql query

standard sparql, no modifications

<aryman> what is the presentation link?

<ericP> http://w3c.github.io/data-shapes/shacl/#operation-validateNodeAgainstShape

shapes and classes are distinct; not related


rdf vocab all mapped to sparql

could be used with less than full sparql engine

<scribe> closed world constraints

<hknublau> +q

holger: no relationship on shapes, constraints, classes: is classScope the same as in Holger's proposa.?

pfps: yes. you can say that constraints are classes, but classes and nodes and shapes are all separate; nothing operates over them
... shouldn't create a node that is both a shape and a constraint, or class and constraint; but are not required to be disjoint
... proposal is agnostic on their relationship

Arnaud: terminology: is this same as Holger?

pfps: no, different; constraint is the thing that you run and that has violations
... a shape is like the thing in shex -- shapes are satisfied, don't have violations
... conditions are the things that make the node to shape connection
... constraint is combination of scope and shape
... scope: can be a single node; all instance of a type; you can scope a condition to those nodes that satisfy a shape
... shapes are either rdf-encoded or sparql
... rdf encoding doesn't (yet) cover all of sparql
... shapes can refer to other shapes
... any rdf can be added if there is a sparql translation

aryman: can you refer to shapes by name? would imply recursion

pfps: you can name shapes, but no recursion
... aka, no cyclic references

<hknublau> +q

pfps: because cannot be done in a single translation to sparql
... this is a constraints proposal, not shape recognition

aryman: gives example of test cases and defects

recursive shapes are a syntax violation

hknublau: can combine class-based selection & shape based; if just have scope that is a shape can you insert sparql into constraint? if so, this only supports a subset of sparql

pfps: gives an answer in code, using ?THIS
... Peter agrees with Holger, need to be careful with sparql as a scope; may not work

hknublau: problem is arbitrary sparql as a selector; peter agrees

<hknublau> Problem case, e.g. FILTER STRSTARTS(STR(?this), “http://example.org/ns#”)

proceeding with examples

UC1: the model is broken

4 examples

<aryman> classScope is not the norm in Linked Data APIs, i.e. validating PUT and POST requests

aryman: in linked data, classScope is not the norm

<iovka> (sorry for being late, technical problems ...)

UC2: enforcing cardinality - skip

<Zakim> ericP, you wanted to ask if the cycles (last block) is for cycles between a single pair of classes

pfps: requires rdfs closure; otherwise needs jplus sign

UC4: variations on a shape

pfps: something has a status that is either reported or varified
... + two constraints that have shape scope, not class scope
... if no type links, would say: everything whose status is reported has to have at least one (or two) reporters; once you have

,,, shape scope you don't need type links

scribe: UC9 contract time intervals
... UC23 schema.org constraints
... shows transitivity as a violation; plus class scopes on Person -- uses some sparql for comparison of dates
... common that you have to drop into sparql

UC33: validate medical procedure

pfps: bugs from shex primer, and choices example

<hknublau> +q

hknublau: make not be possible to create a single sparql query for all

pfps: this is about sub-optimal implementation of sparql; proposal could be implemented in other ways

aryman: single sparql query is semantics of constraint?

pfps: trans to single sparql query is a referent implementation

<hknublau> Problem cases with Sub-Selects (they cannot access any variables from the outside)

pfps: could be a problem with large constraints over large graphs

aryman: no error reporting mechanism ; in practice you would evaluate in chunks

pfps: this proposal does have error reporting; for high level language it's simple, but for raw sparql it is the sparql result

<Labra> +q

Labra: pfps proposal does not define high level language

Arnaud: how much is in the core?

<Labra> Labra: Peter's proposal is more about how to constrain the language to be based on SPARQL than about what is in the language

pfps: so far no template mechanism; with templates, high level language is irrelevant;
... high level language is just pointers to sparql translations
... similar to Holger's proposal

next f2f meeting

UNKNOWN_SPEAKER: where and when

<ericP> +1 to lille

UNKNOWN_SPEAKER: Iovka offered Lille (FR), not far from Paris

<simonstey> +1 to europe

UNKNOWN_SPEAKER: when: cannot be same week as TPAC

<simonstey> WU vienna could host too

<pfps> I'm not sure that I can travel to Europe until October due to budget limitations.

<Labra> +1 for Lille

<michel> +1 Lille

<iovka> you can also come through brussels

+1 Lille, -1 August, +1 mid- late-September

<hknublau> Europe has a better time zone for me than East Coast.

Arnaud: 8/19 September?

<Arnaud> PROPOSED: next F2F in Lille on 8-10 September


<simonstey> +1

<iovka> +1

<Dimitris> +1 for Europe but September will hard to commit from now (even for virtual participation)

<Labra> +1

<michel> ah, won't be able to make that

<Arnaud> what would work for you michel?

<pfps> 0 as budget limitations make it hard to travel now - I even had to turn down the DL workshop in Greece

<Arnaud> PROPOSED: next F2F in Lille on 1-3 September?

<Arnaud> scratch that

<Arnaud> Not quite resolved: next F2F in Lille on 8-10 September

<aryman> I can't make it

<aryman> in Australia

<Dimitris> 10-18 / 09 won't work for me so I might skip the last day

Arnaud: ok, I can set up a poll to find out which week in september would work best

<aryman> +1 for poll

<Arnaud> break for 15mn

<Arnaud> scribenick: kcoyle

<scribe> Finished - deep dives; thanks to all

Round of self-criticism

ericP: semantics are complicated; we don't have an elegant extensibility mechanism, just language refs
... no templates in core language;
... document status is "catching up"; document suite is bigger
... prefixes and bases inherited from surrounding doc rather than literals
... doesn't transform isomorphically to turtle
... there are 'extra bits"

Arnaud: are there some user stories you would have trouble addressing?

ericP: we can always call out to extentions, so question is which can we meet in core language? we meet more than other languages but still not all

<pfps> Huh?

pfps: larger than other proposals?

ericP: what you can do without sparql; our core language is larger than holger's, not sure re: peter's
... decides, no, not larger than peter's

aryman: uneasy with recursion; value references can be deeply nested: are you confident you have clear semantics for that?

iovka: yes, i am confident because do not mix negation and recursion; disjunction does not cause a problem, but is harder to check
... two kinds of disjunction - one of, some of

pfps: semantics are now more complicated - do you believe it is right?

iovka: yes, it is complicated; but I am confident that it works; now needs formal proof (can't really hear now - very soft)

Arnaud: all of the proposals have unfinished areas

what is the reason for the complexity (to Peter)?

<iovka> next step is to write proofs and to provide a formal study of the computational complexity

pfps: very complex with many interacting parts; now multiple partial implementaiton semantics; hard to know what's going on
... hard to have confidence that it can be fixed

iovka: allow negation onlhy on non-recursive shapes
... what would be most helpful at this point?

pfps: dunno.

Arnaud: possible: test suite could help nail down corner cases

aryman: what level of rigor was applied to sparql?

hknublau: shacl is a chance to improve on spin; draft has gone through iterations, borrows from other approaches
... weaknesses: reliance on prefixes from surrounding file, but RDF does not have API for prefixes
... prefixes can be easily lost

<aryman> OSLC defined an RDF voc for prefixes for use in a simple query syntax

hknublau: need to be spelled out
... needs pre-binding of variables as in Jena, but perhaps not supported by all dbs
... reliance on sparql extensions ; open issue: inferencing - can we rely on it or not?
... seems we can't rely on it, not always supported, can't activate programmatically. This doesn't affect core language
... can users expect inferencing to be activated? have to tell engine which queries require inferencing
... compact syntax could be added on top of this proposal
... need test cases so we can be sure we're talking about the same thing
... no abstract syntax

aryman: prefixes - same problem in OSLC - has vocab terms for perfixes
... also a mechanism in JSON-LD that could be added to any proposals
... similar to constraint severity

hknublau: that's a lot of overhead

<iovka> +q

<Arnaud> iovka? I can't hear you

<iovka> ok, apparnently sound problem

<iovka> -q

<aryman> looks like iovka is disconnected from the audio?

pfps: what about treatment of recursive shapes?

hknublau: haven't investigated this in depth; just a place holder

<iovka> +q

<Zakim> ericP, you wanted to ask about support for magic properties outside of Jena

ericP: implementation uses Jena API for using magic properties - do other sparql implementations have this?

hknublau: not using magic properties; only relying on sparql functions
... user-defined sparql filter and bind functions

ericP: sparql engine with have to implement validate node against shape --

hknublau: no, these are abstract API functions; only function hard carded is sh:??Shape
... sh:hasShape

ericP: use of rdf:collections for disjunctions and value sets;

hknublau: no, you can do that with property path

ericP: ok to use repeated properties?

hknublau: trade-off; with rdf:list template requires just single value argument; iterate in a single sparql query
... shape is conjunction with multiple values/properties; or also is rdf:list - can have an order

iovka: modularity is a drawback; there's no single document that gives a global view; harder for users
... harder to debug
... can you trust modules written by others?

hknublau: thinks it will work

<Arnaud> https://www.w3.org/2014/data-shapes/wiki/Shacl-sparql-presentation#Limitations_and_Problems

pfps: (see end of presentation) solution is sparql-only so if you don't like sparql, this isn't for you
... chunks are missing; doesn't have reporting, doesn't have user-friendly stuff
... no template mechanism
... rdf syntax isn't up to date
... so far a paper-only solution
... positive side is has least implementation issues
... what's in spec is satisfactory but competitive implementations might go further

Arnaud: may miss mark in terms of working group mission

pfps: but spin already did all of this, via templates

<hknublau> http://www.spinrdf.org/spl.html#Attribute

<hknublau> (2009)

pfps: proposal doesn't have way to extend; WG's requirements are not everything you would want to do, therefore drop into sparql is needed

<hknublau> +q

hknublau: holger's and peter's proposals are very close

pfps: no longer as skeptical about need for templating; no languages beyond sparql; shapes and classes
... worry about fragmentation if other languages allowed
... vendor solutions vary a lot; causes lock-in

aryman: how do we converge?

<hknublau> +q

Arnaud: tomorrow: user stories; time line; test suite; discussion about living with other proposals? = a way forward

aryman: looking at 3 proposals' RDF syntax, all look very similar; not much disagreement in RDF vocab;
... we should pick one spec to move forward; Holger's is the most complete, ShEx is very complex.
... start with Holger's a bring in ShEx compact syntax; clear up issues, e.g. recursion
... start with core language; promote templates to core language as needed

hknublau: move 1st part of tomorrow to last day?

<ericP> aryman, hknublau, do you think we can implement the ShEx semantics in SPIN?

I'm around the whole time

<iovka> +q

<aryman> @ericP we can certainly implement a lot of it

Arnaud: candid view: Peter has a solid foundation, but is a bit extreme; ShEx is user-friendly;

<ericP> can we specify tests in shex? they're a lot easier to read and understand.

Arnaud: take Holger's to be more solid like Peter's; increase core language
... ; add user-friendly aspects of ShEx as the compact syntax

<pfps> One problem with Arnaud's proposal is that there are some ShEx constructs that don't fit (easily) into a SPARQL-based solution.

<ericP> so the question is the value of those constructs

<Arnaud> trackbot, end meeting

Summary of Action Items

[NEW] ACTION: iovka to announce a stable version of the semantics document so we can have a review cycle [recorded in http://www.w3.org/2015/05/19-shapes-minutes.html#action01]

Summary of Resolutions

    [End of minutes]

    Minutes formatted by David Booth's scribe.perl version 1.143 (CVS log)
    $Date: 2015/05/28 20:33:55 $