- From: McBennett, Pat <McBennettP@DNB.com>
- Date: Sat, 26 Jul 2014 03:29:15 -0500
- To: Markus Lanthaler <markus.lanthaler@gmx.net>, "public-hydra@w3.org" <public-hydra@w3.org>
> -----Original Message-----
> From: Markus Lanthaler [mailto:markus.lanthaler@gmx.net]
> Sent: Saturday, July 26, 2014 3:46 AM
> To: public-hydra@w3.org
> Subject: Moving forward with ISSUE-30 (IRI template expansion)
>
> Apparently there's no consensus yet on ISSUE-30 [1]. I'm trying to summarize
> the of open questions in this mail. I'll also add my personal opinion about
> these questions. Please add your opinion by replying to this mail and leaving
> the question as well as the other people's responses-
>
> Shall we use a flag (hydra:expandedRepresentation) to switch to "expanded
> representation" or should this be an extensible attribute
> (hydra:valueRepresentation)?
> -------------------------
> Markus: I don't see much value in making this extensible. I find it more
> important to increase interoperability by just having two ways to expand IRI
> template values.
>
Just to make sure I understand this issue correctly, Markus prefers a simple flag 'hydra:expandedRepresentation', which if missing (or present with a value 'false') means take the value literally, but if present and 'true' means apply the proprietary (i.e. *not* Turtle) expansion mechanism Markus detailed.
Ruben suggests a value attribute instead ('hydra:expansionMechanism' seems like a better name than 'hydra:valueRepresentation' to me?). This allows us to add new, different expansion mechanisms in future, i.e.:
1. Does _x have a 'hydra:expansionMechanism'? If not, take the value literally. If yes then...
2. Switch on the value of '?expansionMechanism' from 'SELECT * WHERE { _x <hydra:valueRepresentation> ?expansionMechanism }'
And we'd have to define a value for the default expansion algorithm detailed by Markus, e.g. 'hydra:simpleExpansionMechanism' or 'hydra:simpleAndDefinitelyNotTurtleExpansionMechanism'. It would then be very easy to allow full-blown Turtle expansion by simply adding a new 'hydra:turtleExpansionMechanism'.
So it seems to be the difference between:
(flag) 'SELECT * WHERE { _x <hydra:expandRepresentation> ?expansion }'
if ((expansion == null) || (valueOf(expansion) == 'false')) {
[Use value as literal];
} else {
[Expand value as detailed by Markus];
}
(value) 'SELECT * WHERE { _x <hydra:expansionMechanism> ?expansionMechanism }'
if ((expansionMechanism == null) || (valueOf(expansionMechanism) == 'hydra:expandAsLiteral')) {
[Use value as literal];
} else {
switch (valueOf(expansionMechanism)):
case ('hydra:simpleExpansionMechanism'):
[Expand value as detailed by Markus];
break;
default:
throw new RuntimeException("Unknown expansion mechanism!");
}
Currently I agree with Ruben. It is a little extra work, but really not much. And I'd just worry that introducing a simple flag now will just create noise and confusion later when the inevitable 'I need slightly different behavior than the current *one-and-only* expansion algorithm' request comes along (such as requests for escaping, see final point below).
So +1 for the extensible value attribute.
>
> Shall we use two ^ when adding the type or like Turtle two ^
> -------------------------
> Markus: IMO one ^ is enough. Actually, I would prefer another character
> such as $ as it makes it clearer that the serialization is *not* Turtle.
>
+1 for two ^. Turtle is a W3C standard, and I think its adoption can only grow ('cos it's so intuitive), so borrowing as much of its syntax as possible is a good thing. (And I'm also thinking of the slight differences originally between the Turtle syntax for 'PREFIX' and the SPARQL syntax for 'PREFIX' - that was crazy, so they changed Turtle to align them. I think we should align where possible too.)
+1 for making it clear that we do not support the full-blown Turtle syntax.
>
> Must the datatype xsd:string always be omitted?
> -------------------------
> Markus: I'd would be fine making this a "the datatype xsd:string MAY be
> omitted"
>
+1
>
> Must the datatype rdf:langString always be omitted/present?
> -------------------------
> Markus: I'd say "the datatype rdf:langString MAY be omitted if a language
> tag is present"
>
+1
>
>
> There seems to be consensus that by default, IRI template values should be
> expanded by only using the lexical representation of the value or the IRI (no
> quoting). Does anyone disagree with this? There also seem to be consensus
> that we don't want to do any escaping of strings/IRIs, right?
>
+1 (since if we have an extensible expansion mechanism, we can easily add these capabilities later by introducing new 'quoting' or 'escaping'-capable expansion mechanisms, right?)
>
> [1] https://github.com/HydraCG/Specifications/issues/30
>
>
> --
> Markus Lanthaler
> @markuslanthaler
>
Received on Saturday, 26 July 2014 08:29:46 UTC