How do I fix the Jsoniq static error: invalid expression: syntax error, unexpected "every"?

How do I fix the Jsoniq static error: invalid expression: syntax error, unexpected "every"?

我正在执行此查询以查看此假数据库中是否有可用的多媒体软件包

let $swpackages := [
    {"name": "flimber", "version": 1.8, "category": "admin"},
    {"name": "quack", "version": 5.4, "category": "admin"},
    {"name": "xyz", "version": 3.118, "category": "admin"},
    {"name": "grop", "version": 11, "category": "editor"},
    {"name": "snarl", "version": 3.0, "category": "editor"},
    {"name": "rope", "version": 1.45, "category": "devel"},
    {"name": "crunch", "version": 11.53, "category": "devel"},
    {"name": "quickdelete", "version": 4.8, "category": "util"},
    {"name": "readmind", "version": 2.34, "category": "util"},
    {"name": "slurp", "version": 12.5, "category": "multimetia"},
    {"name": "yaf", "version": 1.1, "category": "multimedia"},
    {"name": "noodle", "version": 11, "category": "multimedia"}
]

我将此信息保存在另一个名为 packages.sq 的文件中。我正在执行以下查询:

 jsoniq version "1.0";
 let $packages := { (: packages.jq :) }    
 every $sw in $packages.swpackages[] satisfies
    (some $package in $packages.swpackages.category[]
          satisfies $cat eq "multimedia")

似乎没有很多关于 jsoniq 的资源,我是这种查询语言的菜鸟。非常感谢有关如何解决我的错误的任何提示。谢谢!

有两个问题:

  1. let 子句必须始终与匹配的 return 子句一起使用(这些是 FLWOR 表达式)。一般来说,子句几乎可以按任何顺序排列,但总是以 return 子句结尾。
  2. 嵌套变量不一致,应改为some $cat)

这会导致以下查询,它应该解析(它在 RumbleDB sandbox 上解析)。

let $packages := { (: packages.jq :) }   
return every $sw in $packages.swpackages[]
       satisfies (some $cat in $packages.swpackages.category[]
                  satisfies $cat eq "multimedia")