- From: McBennett, Pat <McBennettP@DNB.com>
- Date: Fri, 15 Aug 2014 06:16:06 -0500
- To: "public-hydra@w3.org" <public-hydra@w3.org>
Whoops - I sent this reply just to Markus instead of the whole mailing list...
-----Original Message-----
From: McBennett, Pat
Sent: Thursday, August 14, 2014 1:53 PM
To: 'Markus Lanthaler'
Subject: RE: Moving forward with ISSUE-30 (IRI template expansion)
> -----Original Message-----
> From: Markus Lanthaler [mailto:markus.lanthaler@gmx.net]
> Sent: Tuesday, August 12, 2014 3:52 PM
> To: public-hydra@w3.org
> Subject: RE: Moving forward with ISSUE-30 (IRI template expansion)
>
> On 12 Aug 2014 at 15:37, McBennett, Pat wrote:
> > Markus Lanthaler wrote on 11 Aug 2014 at 15:57:
> >> It describes, e.g., how the variable id in the template /users/{id}
> >> is represented in the resulting IRI. You are right, transformation
> >> is
> broader, but
> >> we don't want to transform the value (think e.g. uppercase it), we
> >> just
> want
> >> to serialize it somehow to a string that can be used instead of
> >> that placeholder. So, variableSerialization could work too but it
> >> sounds a bit
> too
> >> "heavy" for my taste.
> >
> > Ok, so from the above it seems you really are only interested in
> > variable expansion here, and nothing else. If someone did want to
> > introduce a mechanism for uppercasing the entire URI (for whatever
> > reason), they couldn't simply define their own 'variable representation'
> > mechanism here, since it's purely for variable substitution. If they
> > wanted to just uppercase the expanded variable values though, then
> > this would be the correct mechanism for them to use.
> >
> > Likewise, if someone wanted to do some custom encoding of part of
> > the template URI other than the variables, then again, this would
> > not be the correct mechanism to use for that.
>
> Right
>
>
> > Personally I preferred the broader interpretation that this
> > mechanism could do 'anything' with 'any part' of the template URI,
> > including variable substitution, character encoding, uppercasing(!), whatever.
> > So am I correct that we really wish to limit this to purely variable
> > substitution?
>
> Yes, that's at least what I want :-)
>
> If you want the template itself to be processed differently, then you
> are changing the semantics of RFC6570. In other words, the IRI
> template isn't
> RFC6570 conformant anymore. This touches ISSUE-17 [6] for which we
> have a
>
> PROPOSAL: Introduce a datatype for RFC6570 IRI templates, but
> don't change the range of hydra:template . Update the Hydra
> JSON-LD context to type-coerce template automatically.
>
> Perhaps we should try to close ISSUE-30 and ISSUE-17 at the same time
> instead of postponing the decision on ISSUE-17!?
>
Aha! Ok, so now I get it. And, yes, I agree that introducing a 'hydra:rfc6570Template' datatype could resolve issue 17, and help with issue 30, while also aided general comprehension (e.g. I was aware of URI Templates of course, but I hadn't read RFC6570, and I wasn't aware of how sophisticated they really are).
>
> >>>> 2) What do we call the expanded value representation (mechanism
> >>>> described in [2])?
> >>>> a) ExpandedRepresentation
> >>>> b) CompleteRepresentation
> >>>> c) something else?
> >>>> I'm leaning towards b) but am open for better names.
> >>
> >> Ruben said
> >>
> >> On 8 Aug 2014 at 14:31, Ruben Verborgh wrote:
> >>> The main characteristic about this option is that it explicitly
> >>> differentiates between URIs and literals, and between literals of
> >>> specific types and languages.
> >>>
> >>> How about ExplicitRepresentation?
> >>> That seems a bit more precise than "Complete".
> >>
> >> I completely agree.
> >>
> >>
> >>> I assume you mean 'what do we call the output of the expansion
> >>> mechanism described in [2]'? Where are you looking to use this new
> >>> term (i.e. is it just in the prose of the spec, or are you trying
> >>> to name a new Hydra property here)?
> >>
> >> We are looking to find a term to be used as value of the
> >> "variableRepresentation" property:
> >>
> >> ... a IriTemplate
> >> template "...."
> >> variableRepresentation ExplicitRepresentation
> >> mapping [ ... ]
> >>
> >>> Anyway, assuming it's the 'output of the mechanism': a) and b)
> >>> both have 'Representation' again (do others find developers
> >>> struggle with the use of this term 'in general', or is it just me...?!).
> >>
> >> I never talked to a developer that struggled with the term
> >> representation
> in
> >> general... but that doesn't mean much :-)
> >>
> >>
> >>> c) given that we're in the context of an IRI mapping template, why
> >>> isn't simply 'expandedValue' good enough? Outside of that context
> >>> I guess we'd just call it the 'iriTemplateExpandedValue' - which
> >>> sits Ok with me too I think...
> >>
> >> We are not serializing those expanded values as structured data, we
> include
> >> them in an expanded IRI template
> >>
> >> /users/{id}
> >> --> users/%22Markus%22%5E%5Ehttp://www.w3.org/2001/XMLSchema
> >
> > Ok, so I'm getting a little confused by all the above. If I
> > understand
> correctly,
> > it seems you weren't looking for a term to describe the output of
> > the
> 'expansion
> > mechanism' at all, but instead just looking for a term to identify
> > the
> expansion
> > mechanism in use, i.e. your trying to give a name to the process you
> detailed in [1].
>
> I'm not sure where you draw the line.. especially that the whole
> process of turning a IRI template + variables into a IRI is called expansion as well.
>
>
> > So I assume that at the moment we have only two possibilities for
> > this
> process
> > (i.e. two possibilities for expansion):
> > 1) The default case of using just using the lexical representation
> > as-is,
> or...
> > 2) The expansion process detailed by [1].
>
> Right. I wanted to limit it forever to these two alternatives. It
> seems, however, that the majority of the group wants to keep this
> extensible. Thus, we need to define a "variableRespresentation"
> property and, for the time being, two IRIs identifying (1) and (2).
>
>
> > Hopefully I've understood this correctly so far, but then which one
> > of the above was Ruben proposing we call 'ExplicitRepresentation'?
> > I'm assuming its 2), but to be honest I'm not sure!
>
> He proposed to call (2) "ExplicitRepresentation" as that
> representations explicitly differentiates between IRIs and literals
> (and literals with different datatypes and/or language tags).
> According to (1), the IRI http://example.com and the literal
> "http://example.com"^^xsd:string are indistinguishable (but in most
> cases it doesn't matter as the server will know what was meant).
>
>
> > Instead I would have thought the following is much simpler (assuming
> > I've understood the above correctly):
> >
> > For 1) - 'noExpansion'
> > For 2) - 'datatypeAndLanguageExpansion'
> >
> > (Yeah, I know, 'datatypeAndLanguageExpansion' is clunky, but really
> > I'm just trying to make sure I'm understanding this discussion
> > properly,
> and
> > it is simple and explicit :) !)
>
> I'm not sure what you are trying to propose here (the terms you
> propose are lowercased suggesting they are properties), so, could you
> please complete the following example:
>
> [
> a IriTemplate ;
> template "http://example.com/users/{id}" ;
> mapping [
> a IriTemplateMapping ;
> variable "id" ;
> property ex:userId .
> ]
> ]
>
> The thing we are discussing here would look as follows:
>
> [
> a IriTemplate ;
> template "http://example.com/users/{id}" ;
> variableRepresentation hydra:ExplicitRepresentation ;
> ...
> ]
>
Yeah, sorry about the capitalization - my bad. But now that I'm back on track, I think I prefer 'variableExpansion' now instead of 'expansionMethod', so we get:
[
a IriTemplate ;
template "http://example.com/users/{id}" ;
variableExpansion hydra:NoExpansion ;
mapping [
a IriTemplateMapping ;
variable "id" ;
property ex:userId .
]
]
...or...
[
a IriTemplate ;
template "http://example.com/users/{id}" ;
variableExpansion hydra:SimplifiedTurtleExpansion ;
mapping [
a IriTemplateMapping ;
variable "id" ;
property ex:userId .
]
]
Or alternatively, 'hydra:ExpansionNone' and 'hydra:ExpansionSimplifiedTurtle' (as I generally recommend left-justifying names because it groups related things together alphabetically. But some people don't like it at all, so it's just a suggestion).
>
> >> Turtle allows to serialize the string literal Markus in the
> >> following
> forms:
> >>
> >> "Markus"
> >> 'Markus'
> >> """Markus"""
> >> '''Markus'''
> >> "Markus"^^<http://www.w3.org/2001/XMLSchema#string>
> >> 'Markus'^^<http://www.w3.org/2001/XMLSchema#string>
> >> """Markus"""^^<http://www.w3.org/2001/XMLSchema#string>
> >> '''Markus'''^^<http://www.w3.org/2001/XMLSchema#string>
> >> ... and this doesn't even include the variability introduced by
> >> escaping [4].
> >>
> >> I would like to have something without all that variability that
> >> should,
> if
> >> possible, also look nicer when embedded in a URL.
> >
> > Yep, I totally agree. I wasn't trying to imply we support 'full
> > Turtle' here at all. I was just suggesting we borrow the Turtle
> > syntax for datatype declaration (i.e. '^^'), that's all. I just
> > meant when people question that 'weird looking' syntax, we can
> > simply point them to "all the existing excellent Turtle
> > documentation" for an explanation of that particular choice of
> > syntax. In other words, I was suggesting we reference just a part of
> > the Turtle specification, the part about specifying datatypes.
>
> But in Turtle the IRI following the two hats in enclosed in angle
> brackets
> (".."^^<http://...>) so we can't even reference that part. And that's
> part of my reluctance to use the two hats. A lot of people familiar
> with Turtle won't read the spec carefully enough to notice that we omit the angle brackets.
>
D'oh! Great point.
>
> > Coming up with a completely different, new syntax doesn't seem right
> > to me, given Turtle does exactly this already. I don't think seeing
> > '^^' would confuse anyone into assuming *full* Turtle support
> > necessarily - we're just borrowing a little bit of a W3C
> > standardized format that does exactly what we need here.
>
> In my opinion it's too little to justify an extremely ugly and hard to
> debug result
>
>
> http://example.com/question-
> for/%2242%22%5E%5Ehttp://www.w3.org/2001/XMLSche
> ma#integer
>
> vs e.g.
>
>
> http://example.com/question-
> for/'42'$http://www.w3.org/2001/XMLSchema#intege
> r
>
Yep, that's a great example illustrating the 'cost' of being more Turtle-compliant.
> ... but apparently I'm the only one with that concern. So, what about
> the alternative to align this closer to Turtle, i.e., also requiring
> the angle brackets where Turtle requires them and calling the
> representation SimplifiedTurtle (simplified because we don't support prefixes and escaping)?
>
+1 - I still think this proposal is worth the cost you illustrate above over creating something completely new.
>
> > Likewise for using '@' for language tags, which seems agreeable to
> > all...
>
> As I already said
>
> >> I would be open to change that as well but unlike the datatype
> >> component, the language-tag component is compliant Turtle (@en).
> >> Furthermore, @ can be used in most parts of a URL without escaping.
>
>
>
> >>>> [1] https://github.com/HydraCG/Specifications/issues/30
> >>>> [2]
> >>>> http://lists.w3.org/Archives/Public/public-hydra/2014Jul/0083.htm
> >>>> l [3] http://tools.ietf.org/html/rfc3986#section-2
> >> [4] http://www.w3.org/TR/turtle/#sec-escapes
> > [1]
> > http://lists.w3.org/Archives/Public/public-hydra/2014Jul/0083.html
> [6] https://github.com/HydraCG/Specifications/issues/17
>
>
> --
> Markus Lanthaler
> @markuslanthaler
>
>
>
Received on Friday, 15 August 2014 11:16:50 UTC