- From: John Walker <john.walker@semaku.com>
- Date: Mon, 27 Apr 2015 07:35:31 +0200
- To: Holger Knublauch <holger@topquadrant.com>
- Cc: "public-rdf-shapes@w3.org" <public-rdf-shapes@w3.org>
Hi On 27 Apr 2015, at 03:47, Holger Knublauch <holger@topquadrant.com> wrote: > On 4/25/2015 1:21, Erik Wilde wrote: >> >> that's the problem: ideally, you would want to have a vocabulary identified, so that terms from it can be identified as belonging to it. in XML, namespaces do that for you, and because that's a very usefu scoping mechanism, that's how a lot of vocabularies are defined and used. > > Hi Erik, > > to clarify: are you looking for some way to express that a given resource can only have properties from a certain namespace? For example, > > SELECT ?subject ?predicate ?object > WHERE { > ?subject ?predicate ?object . > FILTER (!STRSTARTS(str(?predicate), "http://example.org/ns#")) > } > > would return all triples of the given ?subject that have a predicate from another namespace than the provided one. > > A query as above would be straight-forward to generalize into a SHACL template, so that the syntax would be something like > > ex:ExampleShape > sh:constraint [ > a sh:ClosedShapeByIRIConstraint ; > sh:allowedIRIStarts ( "http://example.org/ns#" ) ; > ] . > > Does this look about right? (I'd be happy to write this down as a requirement for our catalogue so that the WG can vote on it). > > Thanks, > Holger > > In general I expect this would be much easier if said vocabulary were identified with a URI and the terms from the vocabulary (i.e. the properties, classes and individuals) related to it using a property like rdfs:isDefinedBy. John
Received on Monday, 27 April 2015 05:36:01 UTC