@comunica/expression-evaluator

中文文档
3.2.1发布于 2024/08/07MITTypeScriptCommonJS近 30 天下载 1.7万

一个简单的 SPARQL 表达式评估器

中文使用文档
文档目录7 节
  1. 安装
  2. 已曝光课程
  3. 发展
  4. 本地设置
  5. 添加或固定函数
  6. 布局和控制流量
  7. 测试

Comunica 表达式评价器

npm version

之前称为 sparqlee - sparql 表达评价器. 一个简单的符合光谱的SPARQL 1.1表达式评价器包.

更多地了解表达式评估者。 。 。 .

这个模块是 通信框架, (中文(简体) ), 并且只能用于 想要建立自己的查询引擎的开发者。 。 。 .

如果您想要询问Comunica, 请点击这里。 。 。 .

安装

$ yarn add @comunica/expression-evaluator

已曝光课程

发展

本地设置

  1. 安装 yarn 财务报告和审定财务报表 node。 。 。 .
  2. 运行 yarn install。 。 。 .
  3. 使用这些已显示的命令( 或检查) package.json:
    • 新建一次: yarn run build
    • 基准: yarn run bench

添加或固定函数

函数在 函数目录,可以在那里添加或修复它们. 所有定义均使用下列定义中定义的构建器模型来定义: 帮助者.ts。 。 。 .

存在三种类型:

  • 常态函数:具有统一接口的函数,只需要其参数即可计算出结果.
  • 特殊功能:其行为足以偏离规范,因而需要完全控制 超过类型检查和评价(这些主要是功能形式). 它们从正常职能中分离出来,因为它们能够控制评价. 由于我们既支持同步评价,又支持同步评价,每个评价都有不同的背景,因此,特殊职能需要同时执行. 对于正常功能,同步和同步评价是相同的,为了避免间接费用,我们区分这两个功能.
  • 命名函数:对应了SPARQL代数命名表达式.

布局和控制流量

API面临的唯一重要的外部问题是创建一个评价员. 当您创建一个时, 所传递的 SPARQL 代数表达式将转换为内部代表( 见 代数转换器.ts) (中文(简体) ). 这将构建对象( 见 表达式模块包含所有用于评价的逻辑和数据, 例如,SPARQL功能的执行(见 函数模块) (中文(简体) ). 改造后,评估人员将对所有表达方式进行再评价.

测试

测试环境的设置是为了用很少的代码进行大量的测试. 负责流利行为的文件位于 test/util 模块. 大多数测试可以通过运行 runTestTable 方法输入 倾斜。 。 。 . 这种方法需要测试表 。 多个测试运行在一个测试表上(每行一个). 如果还提供了别名,则测试表可能包含别名 (一些手动别名居住在 别名.ts) (中文(简体) ). 这意味着当测试诸如 "3"^^xsd:integer equals "3"^^xsd:integer 实值 "true"^^xsd:boolean。 。 。 . 我们将写一个小表格(例如,增加一些测试),并像这样测试:

import { bool, merge, numeric } from './util/Aliases';
import { Notation } from './util/TruthTable';
import { runTestTable } from './util/utils';
runTestTable({
  testTable: `
       3i 3i = true
       3i -5i = false
       -0f 0f = true
       NaN  NaN = false
   `,
  arity: 2,
  operation: '=',
  aliases: merge(numeric, bool),
  notation: Notation.Infix,
});

可提供更多的选项,并按以下论据的类型定义加以解释: runTestTable。 。 。 .

我们还可以提供 errorTable 页:1 runTestTable 方法. 如果我们想要测试某些参数上调用某些函数会抛出我们想要的错误,则使用此选项 . 一个例子是测试是否 Unknown named operator 当 我们不提供扩展功能的执行.

import { bool, merge, numeric } from './util/Aliases';
import { Notation } from './util/TruthTable';
import { runTestTable } from './util/utils';
runTestTable({
  errorTable: `
       3i 3i = 'Unknown named operator'
       3i -5i = 'Unknown named operator'
       -0f 0f = 'Unknown named operator'
       NaN  NaN = 'Unknown named operator'
   `,
  arity: 2,
  operation: '<https://example.org/functions#equal>',
  aliases: merge(numeric, bool),
  notation: Notation.Infix,
});

当你不在乎错误是什么, 你可以只是测试 ''。 。 。 .

如果表格对您进行测试的限制太大,您需要评估. 你还是应该用 generalEvaluate 函数从 总体评价.ts。 。 。 . 此函数将在可能时自动同时运行同步和同步. 这增加了你的检查范围.

版本与发布记录

@comunica/expression-evaluator 共发布 9 个版本,首次发布于 2023/09/07;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.2.1latest2024/08/072 年前
3.1.02024/05/112 年前
3.0.12024/03/192 年前
3.0.1-alpha.46.0next2024/03/052 年前
3.0.1-alpha.45.02024/02/202 年前
3.0.1-alpha.44.02024/02/192 年前

关于 @comunica/expression-evaluator 的常见问题

@comunica/expression-evaluator 是什么?

一个简单的 SPARQL 表达式评估器

如何安装 @comunica/expression-evaluator?

在项目目录运行 npm install @comunica/expression-evaluator,或使用 pnpm add / yarn add / bun add。

@comunica/expression-evaluator 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@comunica/expression-evaluator 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@comunica/expression-evaluator 可以商用吗?

@comunica/expression-evaluator 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@comunica/expression-evaluator 的下载量有多少?

根据 npm 官方下载统计,@comunica/expression-evaluator 在 2026/10/11 – 2026/11/09 这 30 天内被下载 17,153 次,日均约 572 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@comunica/expression-evaluator 还在维护吗?

最新版本 3.2.1 发布于 2024/08/07(2 年前);至今共发布 9 个版本,其中过去 12 个月发布了 0 个;首次发布于 2023/09/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。