- From: Holger Knublauch <holger@topquadrant.com>
 - Date: Tue, 23 Dec 2014 13:47:03 +1000
 - To: public-data-shapes-wg@w3.org
 
On 12/22/2014 9:01, Holger Knublauch wrote:
>
> The situation seems to be sufficiently tricky that there is no clean 
> solution and we need to pick the least bad compromise out of several 
> bad options.
I just had another idea. We could separate the value type from the node 
type, allowing different combinations. E.g.
ex:MyClass
     :property [
         :predicate ex:myProperty ;
         :valueType rdfs:Resource ;
         :nodeType :BlankNode ;
     ]
would allow any bnode.
ex:MyClass
     :property [
         :predicate ex:myProperty ;
         :valueType ex:OtherClass ;
         :nodeType :IRINode ;
     ]
would allow any instance of OtherClass that is also an IRI - no blank node.
ex:MyClass
     :property [
         :predicate ex:myProperty ;
         :nodeType :LiteralNode ;
     ]
would allow any literal. Neither :valueType nor :nodeType would mean any 
node.
By separating :valueType and :nodeType we actually would have a more 
expressive language, e.g. allowing users to explicitly state whether 
bnodes are allowed or not. A class :BlankOrIRINode could be used for 
both. This approach would also allow us to use rdfs:Resource as the 
:valueType, without introducing a parallel class tree, i.e. it should 
work with the current (inherited) specs.
Does anyone see problems with that?
Holger
Received on Tuesday, 23 December 2014 03:50:12 UTC