QT4CG meeting 128 draft minutes, 8 July 2025

Hello,

Here are the minutes from today’s meeting:

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

QT4 CG Meeting 128 Minutes 2025-07-08

   [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 [8/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 [1/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. Substantive PRs
     * [18]2. Technical agenda
          + [19]2.1. PR #2083: 2054 Generalized Path Expressions
          + [20]2.2. PR #2077 File Module: Incorporate changes
     * [21]3. Any other business
     * [22]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

1. Administrivia

1.1. Roll call [8/12]

   Regrets: DB, JWL, 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)
     * [ ] 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 [23]the agenda.

   Accepted.

1.3. Approve minutes of the previous meeting

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

   Accepted.

1.4. Next meeting

   The next meeting is scheduled for 15 July 2025.

   No regrets heard.

1.5. Review of open action items [1/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.

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 [25]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 [26]#2063: 1996 Lookups, KeySpecifier: Literal, ContextValueRef
     * PR [27]#2019: 1776: XSLT template rules for maps and array
     * PR [28]#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 [29]#2070: Map build patch

   Proposed: merge without discussion.

   Accepted.

1.6.3. Substantive PRs

   The following substantive PRs were open when this agenda was prepared.
     * PR [30]#2083: 2054 Generalized Path Expressions
     * PR [31]#2031: 2025 JNodes
     * PR [32]#2077: 2016 File Module: Incorporate changes
     * PR [33]#2071: 77c deep update
     * PR [34]#2043: 2038 Tweak the rules for fn:apply-templates
       references to modes
     * PR [35]#2037: 2036 Add rule for streamability of xsl:map
     * PR [36]#2019: 1776: XSLT template rules for maps and array
     * PR [37]#2014: QT4CG-122-01 Add notes, examples, and rationale for
       xsl:select
     * PR [38]#2011: 675(part): Add XSLT static typing rules for new kinds
       of XPath expression

2. Technical agenda

   This week, let's continue our review of the JNodes proposal, starting
   with the proposal for generalized path expressions.

2.1. PR #2083: 2054 Generalized Path Expressions

   See PR [39]#2083

   MK introduces the PR: it's a branch on top of the JNodes branch.
     * MK: It's inspired by a remark from CG about not overloading the "?"
       operator. I went back and considered if we could use "/" now that
       there's more symmetry in the axes.
          + All of the substantive changes are in path expressions.

   MK walks through the revised prose.
     * MK: I changed the structure of the grammar, but not the semantics.
       Forward and reverse steps are no longer a syntactic distinction.
     * MK: There's more change in the section on node tests.

   Looking at the syntax first.
     * MK: A SimpleNodeTest is now either a TypeTest or a Selector
       (KindTest has been generalized to TypeTest and NameTest has been
       generalized to Selector).

   MK walks through the details of the grammar.
     * MK: We split into selectors on XNodes and selectors on JNodes.
          + ... There's a new capability where as selector can take
            get(expr). You can dynamically compute the element names you
            want to select.
     * MK: The complimentary text for JNodes is the same syntax but
       different semantics.
          + ... The semantics of NCName now depend on the kind of
            expression you're evaluating.
          + ... Indexing into arrays is child::*[3] (or child::get(3)).

   Moving on to type tests.
     * MK: With sufficient contrivance, I think you can probably wrap a
       JNode in JNode. So it's possible in theory that you'd want JNode().
     * MK: In the abbreviated syntax, @ is retained but doesn't apply to
       JNodes.
     * MK: The other area of change is Lookup Expressions which I've
       trimmed back to basically what we had in 3.1. We don't need to have
       two solutions to the same problem.
     * JLO: I'm very pleased. I have some questions...what happens if I'm
       doing a path expression like child::code on a mixed sequence?
     * MK: At the moment, there's no rule that says the left hand side has
       to be homogeneous.
     * JLO: So what will this return?

  (<code/>, map{"code": 1})//child:code

     * MK: That will select from both of them.
     * JK: Satisfying and gratifying. In the JNode selector section, the
       examples assume that the JNodes are arrays or maps. What happens if
       they are entries?
     * MK: There probably should be more examples of that. I think the
       rules cover it because they're defined in terms of the children
       accessor.
     * JK: It's really going to throw people if it returns unexpected
       results.
     * MK: In a sense, I want to focus on the core cases first.
     * RD: I agree this all looks very good. The item type "instance of"
       expression for GNodes and JNodes should be lower case.
     * MK: There's a precedent in QName where we use upper-case.
     * NW: I was going to make a similar comment.
     * JLO: More generally, we have GNodes, XNodes, and JNodes and we have
       XTrees and JTrees, but do we have GTrees?
     * MK: A tree either consists entirely of JNodes or entirely of
       XNodes. A GNode is an abstract concept; it's always one or the
       other.
     * JLO: We have document node in the absolute path section. Is it
       useful for us to have the concept of a JRoot or JDocument?
     * MK: I didn't feel it was useful to have different kinds of JNode in
       the type system.
          + ... A JNode is either a root or a non-root, but I didn't add
            it to the type system.
          + ... I don't see any operations that are different between
            those cases.
          + ... But I suppose the same is true of subtypes of XML nodes.
          + ... That could be added, but I didn't see any value.
     * JLO: If you select with an absolute path, you always get a JNode
       that is a root.
     * MK: Slash itself will always select a parentless node.
     * JLO: Oh, right, so what I said was wrong.
     * WP: What would a schema language for JSON look like? Very cool.

   Some discussion of the practical next steps.
     * MK: What I propose doing is to come back with an editorially
       complete version except for the XSLT side. That will require
       technical work.
          + ... Hopefully we can review it briefly next week and accept
            it.

   The CG agrees to move on to some other open PRs.

2.2. PR #2077 File Module: Incorporate changes

   See PR [40]#2077
     * CG: I've tried to unify things and bring it into alignment with
       other specifications.

   CG summarizes the changes, generally.
     * NW: I'm not sure that all operating systems define a last modified
       time for a directory.
          + ... Maybe last-modified should return xs:dateTime?.
     * CG: I'll investigate.

   CG continues a survey of the functions in the spec.
     * NW: What about "/" and "\"?
     * CG: I think that the user should use path-to-uri.
     * JLO: I don't know how often permissions are handled in this
       specification?
          + ... Since we have a function to list all roots, that will
            likely raise permissions issues?
     * CG: Permissions are fairly tricky.
          + ... It's very OS dependent.
     * NW: It's messy, even in Java.
     * JLO: Do we raise issues if the OS raises them, or do we swallow
       them.
     * CG: Unclear. I can think about error handling for those cases.
     * JLO: From the very non-conformant eXist implementation, you can't
       list roots unless you're an administrator.
     * CG: Some of the file module may be inaccessible if you don't have
       administrator privileges.
     * JK: This looks really good. Could we avoid "regular" because it
       makes me think of regular expressions.
          + ... But perhaps we should define what it means.
     * RD: Can we reference the POSIX spec?
     * CG: Yes.

   ACTION: QT4CG-128-01 CG to consider using "standard" or some other term
   instead of "regular" in the file: module. ACTION: QT4CG-128-02 CG to
   investigate what to say about permissions.

   Proposal: accept this PR.

   Accepted.

   ACTION: QT4CG-128-03 NW to compare the file: module against the
   equivalent XProc 3.1 steps

3. Any other business

   None heard.

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-08.html#minutes
   7. https://qt4cg.org/meeting/minutes/2025/07-08.html#new-actions
   8. https://qt4cg.org/meeting/minutes/2025/07-08.html#administrivia
   9. https://qt4cg.org/meeting/minutes/2025/07-08.html#roll-call
  10. https://qt4cg.org/meeting/minutes/2025/07-08.html#agenda
  11. https://qt4cg.org/meeting/minutes/2025/07-08.html#approve-minutes
  12. https://qt4cg.org/meeting/minutes/2025/07-08.html#next-meeting
  13. https://qt4cg.org/meeting/minutes/2025/07-08.html#open-actions
  14. https://qt4cg.org/meeting/minutes/2025/07-08.html#open-pull-requests
  15. https://qt4cg.org/meeting/minutes/2025/07-08.html#blocked
  16. https://qt4cg.org/meeting/minutes/2025/07-08.html#merge-without-discussion
  17. https://qt4cg.org/meeting/minutes/2025/07-08.html#substantive
  18. https://qt4cg.org/meeting/minutes/2025/07-08.html#technical-agenda
  19. https://qt4cg.org/meeting/minutes/2025/07-08.html#pr-2083
  20. https://qt4cg.org/meeting/minutes/2025/07-08.html#pr-2016
  21. https://qt4cg.org/meeting/minutes/2025/07-08.html#any-other-business
  22. https://qt4cg.org/meeting/minutes/2025/07-08.html#adjourned
  23. https://qt4cg.org/meeting/agenda/2025/07-08.html
  24. https://qt4cg.org/meeting/minutes/2025/07-01.html
  25. https://qt4cg.org/meeting/minutes/2025/07-08.html#technical-agenda
  26. https://qt4cg.org/dashboard/#pr-2063
  27. https://qt4cg.org/dashboard/#pr-2019
  28. https://qt4cg.org/dashboard/#pr-1062
  29. https://qt4cg.org/dashboard/#pr-2070
  30. https://qt4cg.org/dashboard/#pr-2083
  31. https://qt4cg.org/dashboard/#pr-2031
  32. https://qt4cg.org/dashboard/#pr-2077
  33. https://qt4cg.org/dashboard/#pr-2071
  34. https://qt4cg.org/dashboard/#pr-2043
  35. https://qt4cg.org/dashboard/#pr-2037
  36. https://qt4cg.org/dashboard/#pr-2019
  37. https://qt4cg.org/dashboard/#pr-2014
  38. https://qt4cg.org/dashboard/#pr-2011
  39. https://qt4cg.org/dashboard/#pr-2083
  40. https://qt4cg.org/dashboard/#pr-2077

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 8 July 2025 16:33:08 UTC