QT4CG meeting 129 draft minutes, 15 July 2025

Hi folks,

Here are today’s minutes:

   https://qt4cg.org/meeting/minutes/2025/07-15.html

QT4 CG Meeting 129 Minutes 2025-07-15

   [1]Meeting index / [2]QT4CG.org / [3]Dashboard / [4]GH Issues / [5]GH
   Pull Requests

Table of Contents

     * [6]Draft Minutes
     * [7]Summary of new and continuing actions [0/9]
     * [8]1. Administrivia
          + [9]1.1. Roll call [9/12]
          + [10]1.2. Accept the agenda
          + [11]1.3. Approve minutes of the previous meeting
          + [12]1.4. Next meeting
          + [13]1.5. Review of open action items [0/6]
          + [14]1.6. Review of open pull requests and issues
               o [15]1.6.1. Blocked
               o [16]1.6.2. Merge without discussion
               o [17]1.6.3. Close without action
               o [18]1.6.4. Substantive PRs
     * [19]2. Technical agenda
          + [20]2.1. JNodes/Generalized path expressions
          + [21]2.2. PR #2094: 2003 Generalize Map Constructors
          + [22]2.3. PR #2014: QT4CG-122-01 Add notes, examples, and
            rationale for xsl:select
          + [23]2.4. PR #2019: 1776: XSLT template rules for maps and
            array
          + [24]2.5. PR #2037: 2036 Add rule for streamability of xsl:map
          + [25]2.6. PR #2043: 2038 Tweak the rules for fn:apply-templates
            references to modes
          + [26]2.7. PR #2011: 675(part): Add XSLT static typing rules for
            new kinds of XPath expression
     * [27]3. Any other business
     * [28]4. Adjourned

Draft Minutes

Summary of new and continuing actions [0/9]

     * [ ] QT4CG-082-02: DN to work with NW to come to agreement on the
       fn:ranks proposal
     * [ ] QT4CG-112-01: JLO to propose a concrete example that uses "."
       in a ~%method~s.
     * [ ] QT4CG-116-01: Add a specific error code for unsupported options
       on doc and doc-available
     * [ ] QT4CG-118-01: MK to make an incorrect type raise an error in
       #1906
     * [ ] QT4CG-123-01: MK to do the set example in XQuery.
     * [ ] QT4CG-127-01: NW to diagram the JTree representing arbitrary
       XDM content.
     * [ ] QT4CG-128-01 CG to consider using "standard" or some other term
       instead of "regular" in the file: module.
     * [ ] QT4CG-128-02 CG to investigate what to say about permissions.
     * [ ] QT4CG-128-03 NW to compare the file: module against the
       equivalent XProc 3.1 steps
     * [ ] QT4CG-129-01: MK to fix the remaining prose references to
       MapKeyExpr and MapValueExpr

1. Administrivia

1.1. Roll call [9/12]

   Regrets: DB, BTW.
     * [ ] David J Birnbaum (DB)
     * [X] Reece Dunn (RD)
     * [X] Christian Gr¸n (CG)
     * [X] Joel Kalvesmaki (JK)
     * [X] Michael Kay (MK)
     * [X] Juri Leino (JLO)
     * [X] John Lumley (JWL)
     * [ ] Dimitre Novatchev (DN)
     * [X] Wendell Piez (WP)
     * [X] Ed Porter (EP)
     * [ ] Bethan Tovey-Walsh (BTW)
     * [X] Norm Tovey-Walsh (NW) Scribe. Chair.

1.2. Accept the agenda

   Proposal: Accept [29]the agenda.

   Accepted.

1.3. Approve minutes of the previous meeting

   Proposal: Accept [30]the minutes of the previous meeting.

   Accepted.

1.4. Next meeting

   The next meeting is scheduled for 22 July 2025.

   DB gives regrets.

1.5. Review of open action items [0/6]

   (Items marked [X] are believed to have been closed via email before
   this agenda was posted.)
     * [ ] QT4CG-082-02: DN to work with NW to come to agreement on the
       fn:ranks proposal
     * [ ] QT4CG-112-01: JLO to propose a concrete example that uses "."
       in a ~%method~s.
     * [ ] QT4CG-116-01: Add a specific error code for unsupported options
       on doc and doc-available
     * [ ] QT4CG-118-01: MK to make an incorrect type raise an error in
       #1906
     * [ ] QT4CG-123-01: MK to do the set example in XQuery.
     * [ ] QT4CG-127-01: NW to diagram the JTree representing arbitrary
       XDM content.
     * [ ] QT4CG-128-01 CG to consider using "standard" or some other term
       instead of "regular" in the file: module.
     * [ ] QT4CG-128-02 CG to investigate what to say about permissions.
     * [ ] QT4CG-128-03 NW to compare the file: module against the
       equivalent XProc 3.1 steps

1.6. Review of open pull requests and issues

   This section summarizes all of the issues and pull requests that need
   to be resolved before we can finish. See [31]Technical Agenda below for
   the focus of this meeting.

1.6.1. Blocked

   The following PRs are open but have merge conflicts or comments which
   suggest they aren't ready for action.
     * PR [32]#2063: 1996 Lookups, KeySpecifier: Literal, ContextValueRef
     * PR [33]#2019: 1776: XSLT template rules for maps and array
     * PR [34]#1062: 150bis revised proposal for fn:ranks

1.6.2. Merge without discussion

   The following PRs are editorial, small, or otherwise appeared to be
   uncontroversial when the agenda was prepared. The chairs propose that
   these can be merged without discussion. If you think discussion is
   necessary, please say so.
     * PR [35]#2096: 2035 Drop unworkable example of recursive record
       types

   Discussion ensued.
     * JLO: Does it mean that recursive record types are impossible in
       general?
     * MK: No record types can be recursive, but you can't instantiate
       them with something that's cyclic.
          + ... Type A can refer to type B, but you can instantiate an
            A-B-A cycle, even with functions.
     * CG: I proposed an example, is that legal?

declare record local:a(b as local:b?);
declare record local:b(a as local:a?);
() => local:a() => local:b()

     * MK: You've instantiated both record types, but there's no cycle
       between references.
     * CG: Oh, I see.
     * MK: You can't make an A that points to a B that points back to the
       same A.

   Some discussion of how updating works.
     * JWL: Is this case that can be determined statically, or is it
       impossible to write it syntactically?
     * MK: It won't have the effect you think.
     * WP: I think this is fine.
     * MK: It seems to be a fairly well known problem in functional
       languages. They do have some constructs to get around the problem.
       But they're fairly convoluted.
     * RD: Might be worth adding a note that says you can't create cyclic
       instances.

   Proposal: merge this PR.

   Accepted.

1.6.3. Close without action

   It has been proposed that the following issues be closed without
   action. If you think discussion is necessary, please say so.
     * Issue [36]#2057: Steps: variable element names
     * Issue [37]#1307: For symmetry, add functions array:scan-left and
       array:scan-right

   Proposal: close without further action.

   Accepted.

1.6.4. Substantive PRs

   The following substantive PRs were open when this agenda was prepared.
     * PR [38]#2011: 675(part): Add XSLT static typing rules for new kinds
       of XPath expression
     * PR [39]#2014: QT4CG-122-01 Add notes, examples, and rationale for
       xsl:select
     * PR [40]#2019: 1776: XSLT template rules for maps and array
     * PR [41]#2031: 2025 JNodes
     * PR [42]#2037: 2036 Add rule for streamability of xsl:map
     * PR [43]#2043: 2038 Tweak the rules for fn:apply-templates
       references to modes
     * PR [44]#2071: 77c deep update
     * PR [45]#2083: 2054 Generalized Path Expressions
     * PR [46]#2094: 2003 Generalize Map Constructors

2. Technical agenda

2.1. JNodes/Generalized path expressions

   Last week, we agreed to return to this with an eye towards accepting it
   unless there are objections.

   See PR [47]#2083: 2054 Generalized Path Expressions and PR [48]#2031:
   2025 JNodes

   (I believe that #2083 subsumes #2031, so accepting #2083 should also
   close #2031.)
     * MK: Just want to draw your attention to the fact that I responded
       to several comments.
          + ... The mixed case names are now all lowercase
          + ... Gunther Radamacher's comment about needing to reserve more
            function names; we had both a type and a function called
            jnode(). I've renamed the type as jnode-type() but we may want
            to resolve that differently.
          + ... The property names now use ".." instead of "∂".
     * CG: I think it's a good idea to merge this PR; but it's so huge.
          + ... I think that transitive closure functions might need some
            revisions.
     * NW: I think we should merge it.
     * JK: I'd like to merge it, but I think we need to have a discussion
       about how definitions are worded.

   Proposal: merge this PR.

   Accepted.

   This obsoletes #2031.
     * JWL: Is it worth putting something on Slack that we're making this
       big change.

2.2. PR #2094: 2003 Generalize Map Constructors

   See PR [49]#2094

   MK introduces the PR.
     * MK: This is confined to a fairly small part of the XPath spec.
          + ... I've moved things around a bit.
          + ... The section begins with an example of something you didn't
            used to be able to do.
          + ... The new case is that an ExprSingle can be written without
            a : and it must return zero or more map items.

   The example with employee has an error, it should be: { //employee !
   {@id : .} }.
     * JWL: Can you use a predicate?
     * MK: Yes, I'll add an example.
     * JLO: One thing that struck me: the map key expression and map value
       expression are no longer used by the map constructor expression but
       are referenced elsewhere.
     * MK: I thought I'd dropped all reference to them.
          + ... Oh, you're right. There are.

   ACTION: QT4CG-129-01: MK to fix the remaining prose references to
   MapKeyExpr and MapValueExpr

   Some discussion of why it was dropped. Avoiding lookahead was the goal.
     * RD: With the key, if you have a sequence of values, are we handling
       the semantics of that?
     * MK: The result of atomizing must be a single atomic item otherwise
       it's a type error.
     * JLO: I'd like to be able to put in a variable into a map and have
       it expand into key and value.
          + ... Previously we said this shouldn't be allowed because of
            substitutability
          + ... But we're so close now. Wouldn't it be possible?
     * MK: I'm not sure I understand the example.
     * JLO: I want:

let $a := 1
let $m := { $a }

   to return {"a": 1}
     * MK: Substitutability certainly means you should be able to rename
       variables without changing expressions.
     * CG: In this example, $a will be allowed and if it returns a map
       that will become a map.

   Proposal: accept this PR.

   Accepted.

2.3. PR #2014: QT4CG-122-01 Add notes, examples, and rationale for xsl:select

   See PR [50]#2014

   MK introduces the PR starting with the general rules about where XPath
   expressions occur in XSLT.
     * MK: There is some reordering of sections.
          + ... "Creating nodes and sequences" has moved into "Callable
            components".
          + ... Some examples have been added.

   Proposal: accept this PR.

   Accepted.

2.4. PR #2019: 1776: XSLT template rules for maps and array

   See PR [51]#2019

   Not ready yet.

2.5. PR #2037: 2036 Add rule for streamability of xsl:map

   See PR [52]#2037

   Needs to be reviewed.

2.6. PR #2043: 2038 Tweak the rules for fn:apply-templates references to
modes

   See PR [53]#2043

   MK introduces this PR.
     * MK: We introduced fn:apply-templates() largely so that we could use
       XPath array and map constructors and do apply templates in the
       middle.
          + ... In implementing it, I realized there was a complication
            that wasn't really adding any value: you could make it use the
            default mode from the static context.
          + ... I don't think we want to keep the default mode around in
            every dynamic context.
          + ... Let's make it compulsory to say what mode you want to
            apply templates in if you're using the functional form.
          + ... The effect is to remover #default from the list of
            available modes.
     * JWL: Would this apply in an XPath expression that's in an enclosed
       mode?
     * MK Yes.

   Proposal: accept the PR.

   Accepted.

2.7. PR #2011: 675(part): Add XSLT static typing rules for new kinds of XPath
expression

   See PR [54]#2011

   MK introduces the PR.
     * MK: This just updates the current table of rules to add some new
       constructs.
          + ... The U-type of a choice item type is defined.
          + ... The table and its description have been expanded.
          + ... OtherwiseExpr has been added.
          + ... Some notational changes have been made.
          + ... StringTemplate has been added.
          + ... ContextValueRef becomes a bit more complicated as a
            consequence of generalizing the context item.
          + ... Partial Function Application has been added (with a TODO).
          + ... Deep Lookup needs to be examined again
     * MK: It doesn't address streamability, it just updates the relevant
       static type information.
     * JWL: Is adding jnodes going to be about adding map types?
     * MK: No, they're a new type.

   Proposal: accept the PR.

   Accepted.

3. Any other business

   Summer vacation?
     * NW: Does the group want to take a vacation?
     * CG: I'll be gone the last week of August and the first two weeks of
       September.
     * NW: Let's revisit this next week.
     * MK: I think we should plan to produce a stable working draft.
     * NW: I think that's a good idea. As soon as we feel like the JNodes
       proposal is bedded in, perhaps that's the time.

   Some discussion of this in the context of Mike's Balisage paper.
     * NW: I think the question of stable draft for reference from papers
       is easier. I don't think we need any sort of group consensus to say
       "here's what the draft was on such-and-such a date." URIs are
       cheap.

4. Adjourned

References

   1. https://qt4cg.org/meeting/minutes/
   2. https://qt4cg.org/
   3. https://qt4cg.org/dashboard
   4. https://github.com/qt4cg/qtspecs/issues
   5. https://github.com/qt4cg/qtspecs/pulls
   6. https://qt4cg.org/meeting/minutes/2025/07-15.html#minutes
   7. https://qt4cg.org/meeting/minutes/2025/07-15.html#new-actions
   8. https://qt4cg.org/meeting/minutes/2025/07-15.html#administrivia
   9. https://qt4cg.org/meeting/minutes/2025/07-15.html#roll-call
  10. https://qt4cg.org/meeting/minutes/2025/07-15.html#agenda
  11. https://qt4cg.org/meeting/minutes/2025/07-15.html#approve-minutes
  12. https://qt4cg.org/meeting/minutes/2025/07-15.html#next-meeting
  13. https://qt4cg.org/meeting/minutes/2025/07-15.html#open-actions
  14. https://qt4cg.org/meeting/minutes/2025/07-15.html#open-pull-requests
  15. https://qt4cg.org/meeting/minutes/2025/07-15.html#blocked
  16. https://qt4cg.org/meeting/minutes/2025/07-15.html#merge-without-discussion
  17. https://qt4cg.org/meeting/minutes/2025/07-15.html#close-without-action
  18. https://qt4cg.org/meeting/minutes/2025/07-15.html#substantive
  19. https://qt4cg.org/meeting/minutes/2025/07-15.html#technical-agenda
  20. https://qt4cg.org/meeting/minutes/2025/07-15.html#h-E26407E8-EB3B-4D13-B605-81347EE4D5FF
  21. https://qt4cg.org/meeting/minutes/2025/07-15.html#pr-2094
  22. https://qt4cg.org/meeting/minutes/2025/07-15.html#pr-2014
  23. https://qt4cg.org/meeting/minutes/2025/07-15.html#pr-2019
  24. https://qt4cg.org/meeting/minutes/2025/07-15.html#pr-2037
  25. https://qt4cg.org/meeting/minutes/2025/07-15.html#pr-2043
  26. https://qt4cg.org/meeting/minutes/2025/07-15.html#pr-2011
  27. https://qt4cg.org/meeting/minutes/2025/07-15.html#any-other-business
  28. https://qt4cg.org/meeting/minutes/2025/07-15.html#adjourned
  29. https://qt4cg.org/meeting/agenda/2025/07-15.html
  30. https://qt4cg.org/meeting/minutes/2025/07-08.html
  31. https://qt4cg.org/meeting/minutes/2025/07-15.html#technical-agenda
  32. https://qt4cg.org/dashboard/#pr-2063
  33. https://qt4cg.org/dashboard/#pr-2019
  34. https://qt4cg.org/dashboard/#pr-1062
  35. https://qt4cg.org/dashboard/#pr-2096
  36. https://github.com/qt4cg/qtspecs/issues/2057
  37. https://github.com/qt4cg/qtspecs/issues/1307
  38. https://qt4cg.org/dashboard/#pr-2011
  39. https://qt4cg.org/dashboard/#pr-2014
  40. https://qt4cg.org/dashboard/#pr-2019
  41. https://qt4cg.org/dashboard/#pr-2031
  42. https://qt4cg.org/dashboard/#pr-2037
  43. https://qt4cg.org/dashboard/#pr-2043
  44. https://qt4cg.org/dashboard/#pr-2071
  45. https://qt4cg.org/dashboard/#pr-2083
  46. https://qt4cg.org/dashboard/#pr-2094
  47. https://qt4cg.org/dashboard/#pr-2083
  48. https://qt4cg.org/dashboard/#pr-2031
  49. https://qt4cg.org/dashboard/#pr-2094
  50. https://qt4cg.org/dashboard/#pr-2014
  51. https://qt4cg.org/dashboard/#pr-2019
  52. https://qt4cg.org/dashboard/#pr-2037
  53. https://qt4cg.org/dashboard/#pr-2043
  54. https://qt4cg.org/dashboard/#pr-2011

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 15 July 2025 16:41:41 UTC