Errors/Typos in Shacl-Sparql Spec.

1. The statement

"However, if there is no use of rdfs:subClassOf and rdfs:subPropertyOf
in either the control graph or the data graph, then there would be
little difference between the RDF semantics and simpler semantics."

should probably also include mention of rdfs:domain and rdfs:range

2. The spec defines three sections of an Extended Condition:

"Other SHACL control nodes allow the separation of a condition into
three sections: a scope section, a shape section, and a reporting
section."

However, further down in the spec, the term "control section" is used
where it should be "scope section":

"The control portion of the condition, <control>, is "

"<report> WHERE
 { <control> MINUS { <shape> } }"

3. The spec limits allowed values to be IRIs, but this should be
generalized to allow IRIs or Literals.

4. The translation of has-value components to SPARQL may not be
correct. For example, the translation:

"?this <path> ?V . FILTER ( ?V = <value> )"

fails to taken into account the cardinality of <path>. What happens if
<path> is optional?

I also think it might be safer (and more efficient) to translate
has-value and other components  into SPARQL that does not introduce a
new variable ?V. This can be accomplished by hiding ?V in a subquery
that SELECTs ?this.

5. I believe the intention of node-type components is to allow one of
the listed types. Therefore the component should be translated into a
disjunction. The spec uses conjunction:

"where <test> is the SPARQL conjunction (&&) of isIRI(?V) if "IRI" is
in the list, isBlank(?V) if "blank" is in the list, and isLiteral(?V)
if "literal" is in the list. "

6. Missing angle brackets in the example:

" sh:sparqlScope "?person rdf:type http://example.org/Person"

should be:

" sh:sparqlScope "?person rdf:type <http://example.org/Person>"

7. Example uses "unbounded" but spec says value must be an integer:

sh:minCardinality 0 ; sh:maxCardinality "unbounded" ;

-- Arthur

Received on Monday, 27 April 2015 20:20:39 UTC