- From: Jerven Tjalling Bolleman <jerven.bolleman@isb-sib.ch>
- Date: Fri, 25 Jul 2014 11:39:16 +0200
- To: public-rdf-shapes@w3.org
Hi Lars,
I put your example in ShEx, SPIN and OWL. Just to show that for the
simple cases the sytax in compact form and manchester are not that
different. As well as showing that the RDF versions are quite close as
well. And in the end the why of _my_ preference.
On 25/07/14 10:24, Lars Marius Garshol wrote:> Hi all,
>
> I'd kind of promised myself not to get involved in standardization
again, but unfortunately my employer really needs an RDF constraint
language, and the direction of this group looks really worrying. At
first glance, anyway.
I know how you feel ;)
>
> First of all: I'm glad there seems to be rough consensus that the use
cases and requirements are going to be written first. The initial list
in the charter looks like a good start to me.
>
> There is one thing that confuses me, though. If I want to make a
schema for my web service, wherein I declare that all resources
submitted to it must be of type foaf:Person, must have a foaf:name and a
foo:email, and possibly one or more foo:phone ... then shouldn't the
spec allow me to simply say that?
>
> That is, something like
>
> foaf:Person class,
> foaf:name 1 1,
> foo:email 1 1,
> foo:phone 0 * .
In Shex Compact (corrections welcome),
<WebServicePersonShape> {
rdf:type foad:Person ,
foaf:name xsd:string ,
foo:email xsd:string ,
foo:phone xsd:string *
}
In ShEx RDF
<WebServicePersonShape> a rs:ResourceShape ;
rs:property [ rs:name "one name" ;
rs:occurs rs:Exactly-one . ;
rs:propertyDefinition foaf:name ;
rs:valueShape foaf:Person
],
[ rs:name "one e mail" ;
rs:occurs rs:Exactly-one ;
rs:propertyDefinition foo:email ;
rs:valueShape foaf:Person
] ,
[ rs:name "some number of phone numbers" ;
rs:occurs rs:Zero-or-many ;
rs:propertyDefinition foo:phone ;
rs:valueShape foaf:Person
] ;
In spin turtle
foaf:person a owl:Class;
spin:constraint [ rdfs:label "one name" ;
a spl:Attribute ;
spl:predicate foaf:name ;
spl:count 1 ] ,
[ rdfs:label "one e-mail" ;
a spl:Attribute ;
spl:predicate foo:email ;
spl:count 1 ] ,
[ rdfs:label "some number of phone numbers"
a spl:Attribute ;
spl:predicate foo:phone ;
spl:minCount 0 ] .
In Closed world owl rdf turtle serialisation
foaf:person a owl:Class;
rdfs:subClassOf [ a owl:Restriction ;
owl:cardinality "1"^^xsd:nonNegativeInteger ;
owl:onProperty foaf:name ;
rdfs:label "one name"
] ,
[ a owl:Restriction ;
owl:cardinality "1"^^xsd:nonNegativeInteger ;
owl:onProperty foo:email ;
rdfs:label "one email"
] ,
[ a owl:Restriction ;
owl:minCardinality "0"^^xsd:nonNegativeInteger ;
owl:onProperty foo:phone ;
rdfs:label "some number of phone numbers"
] ,
Some Manchester syntax (again corrections welcome)
Class: foaf:person
foaf:name exactly 1
foo:email exactly 1
foo:phone min 0
> (Please don't get hung up on the syntax of this example. I just
invented it off the top of my head in 2 seconds to ask this question.
It's *not* a proposal.)
>
> I'm confused as to why people seem to prefer solutions that are
vastly more complicated. Could someone explain? Are the proposals less
complicated than they seem, or is there something else going on?
I think I can state my preference as wanting something with more
stretch. i.e. your example should be simple. But when I have complicated
validation or documentation then want to keep using the same thing as
long as possbille. Before I need to go and break out using e.g. semantic
actions.
Part of the discussion is not about what should be achieved, but about
which existing technology should be used as guide. As well as showing
what the technologies in the field can do already.
Regards,
Jerven Bolleman
>
> Best,
> --Lars M.
> http://www.garshol.priv.no/tmphoto/
> http://www.garshol.priv.no/blog/
>
>
Received on Friday, 25 July 2014 09:39:46 UTC