- From: Holger Knublauch <holger@topquadrant.com>
- Date: Thu, 23 Apr 2015 11:20:10 +1000
- To: public-data-shapes-wg <public-data-shapes-wg@w3.org>
- Message-ID: <553848CA.8040509@topquadrant.com>
Great, we seem to agree on this topic then. In my current design I am
using a pre-bound variable ?shapesGraph (as earlier suggested by
Richard) and this produces definitions such as
SELECT ?this (?this AS ?subject) ?predicate ?object
WHERE {
?this ?predicate ?object .
FILTER NOT EXISTS {
GRAPH ?shapesGraph {
?allowedValues (rdf:rest*)/rdf:first ?object .
}
}
}
(for sh:allowedValues). I think for a spec this is quite compact and
elegant - nicer than requiring some query string generation mechanism.
Implementations may of course still create a new query string for each
sh:allowedValues statement, but such optimizations are not really our
business as spec writers.
Thanks
Holger
On 4/23/2015 2:48, Dimitris Kontokostas wrote:
> My proposed resolution was not to forbid the querying of the shapes
> graph but only to not require it.
> Your suggestion seems to follow this approach.
>
> The problem comes to very few facets (2-3 at the moment).
> For these facets, the spec can either define only way (with/without
> querying) or both, but this can be a separate issue imho.
>
> Best,
> Dimitris
>
> On Tue, Apr 14, 2015 at 8:25 AM, Holger Knublauch
> <holger@topquadrant.com <mailto:holger@topquadrant.com>> wrote:
>
> On 4/14/2015 0:34, Peter F. Patel-Schneider wrote:
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 04/12/2015 05:01 PM, Holger Knublauch wrote:
>
> One of the main selling points of RDF technology has
> always been the fact
> that instance and schema are represented uniformly. RDF
> Schema and OWL
> class definitions are instances (of metaclasses)
> themselves. This means
> that such data can not only be stored and shared together,
> but also be
> queried uniformly. In general, SPARQL queries can freely
> walk between
> meta-levels.
>
> Many other formalisms such as XML and SQL databases have a
> stricter
> separation between those levels. If we agree on a
> similarly strict
> separation by making it impossible to query the shapes
> graph from the
> instances graph (and vice versa), then we may throw away a
> unique
> advantage that RDF technology has. I am generally not in
> favor of
> selecting the lowest common denominator for all use cases,
> only because
> certain cases may not have the best performance.
>
> I understand that we need to maintain good performance,
> including the
> ability to use native query optimizations on database
> level where
> possible. Also there are cases where the shapes model is
> really totally
> separate from the database. Yet I believe there are also
> cases where
> being able to access the shapes definitions at runtime is
> beneficial.
>
> In this discussion here, I believe we should distinguish
> between what we
> use in the SPARQL queries of the specification versus what
> optimized
> implementations may do. I believe it should be doable to
> assume that - in
> the context of the spec - the shapes graph can be in the
> same dataset as
> the actual data. So by default we would have a single
> dataset and
> validation gets two parameters:
>
> - the URI of the "instances" data graph (default graph) -
> the URI of the
> shapes graph
>
> I would put this exactly the other way around, namely
>
> I believe that it should be doable to assume that - in the
> context of the
> spec - the shapes graph can be completely separate from the
> actual data. So
> validation has two parameters:
> - the "instances" data graph
> - the shapes graph
>
> I believe that this setup is much cleaner than a design that
> *needs* to do
> something special when the shapes graph is inaccessible from
> the data graph.
> In this setup special things *can* but do *not* need to be
> done when the
> shapes graph is accessible from the data graph.
>
> [...]
>
>
> First and foremost we need a resolution whether SHACL constraints
> can query other shape definitions consistently. Only after we have
> this option, the question becomes what variant of SPARQL mapping
> we select for the formal specification. Quite possibly the SHACL
> spec could define sh:allowedValues by a string generation
> algorithm that turns the rdf:List of allowed values into a FILTER
> NOT IN clause. Yet, once we have the possibility to query the
> named graph of shape definitions plus the template mechanism, then
> I'd argue that it will be more elegant and more compact to use the
> mechanism that we already have, as long as we make sure that
> string generation still remains a possibility to implementers. (A
> consequence of that would be to specify that the members of
> sh:allowedValues cannot be blank nodes, because those could not be
> mapped into a proper SPARQL string, but I assume we agree on that
> anyway).
>
> Regards,
> Holger
>
>
>
>
>
> --
> Dimitris Kontokostas
> Department of Computer Science, University of Leipzig & DBpedia
> Association
> Projects: http://dbpedia.org, http://http://aligned-project.eu
> Homepage:http://aksw.org/DimitrisKontokostas
> Research Group: http://aksw.org
>
Received on Thursday, 23 April 2015 01:21:48 UTC