@comunica/bindings-factory

中文文档
3.3.0发布于 2024/10/08MITTypeScriptCommonJS近 30 天下载 1.9万

Comunica的装订厂模块

中文使用文档
文档目录4 节
  1. 安装
  2. 使用量
  3. 工厂方法
  4. 约束方法

机械装订厂

npm version

这个包提供了工厂 Bindings 对象,可以将变量映射到 RDF 术语. 此套件执行 RDF/ JS BindingsFactory 财务报告和审定财务报表 Bindings 接口.

在内部,它利用 immutable 以确保诸如 set 财务报告和审定财务报表 delete 尽可能重新使用内部内存.

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

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

安装

$ yarn add @comunica/bindings-factory

使用量

import * as RDF from '@rdfjs/types';
import { DataFactory } from '@comunica/data-factory';
import { BindingsFactory } from '@comunica/bindings-factory';

const DF = new DataFactory();
const BF = new BindingsFactory(DF);

const bindings1: RDF.Bindings = BF.bindings([
  [ DF.variable('var1'), DF.literal('abc') ],
  [ DF.variable('var2'), DF.literal('def') ],
]);

const bindings2: RDF.Bindings = BF.fromRecord({
  var1: DF.literal('abc'),
  var2: DF.literal('def'),
});

工厂方法

工厂实例如下.

创建新的约束

绑定可以通过传出密钥值对来创建,也可以以记录形式:

const bindings1: RDF.Bindings = BF.bindings([
  [ DF.variable('var1'), DF.literal('abc') ],
  [ DF.variable('var2'), DF.literal('def') ],
]);

const bindings2: RDF.Bindings = BF.fromRecord({
  var1: DF.literal('abc'),
  var2: DF.literal('def'),
});

克隆装订

捆绑可以克隆如下:

const clonedBindings = BF.fromBindings(otherBindings);

约束方法

以下方法被暴露在由工厂创建的捆绑上.

由于所有约束都是不可改变的,所以原来的约束实例永远不会被改变.

Bindings.has()

这个 has() 方法用于检查给定变量是否存在值. 变量可以作为字符串提供( 不包含 ? 前缀),或作为RDF/JS变量.

if (bindings.has('var1')) {
  console.log('Has var1!');
}
if (bindings.has(DF.variable('var2'))) {
  console.log('Has var2!');
}

Bindings.get()

这个 get() 方法用于读取变量的约束值. 变量可以作为字符串提供( 不包含 ? 前缀),或作为RDF/JS变量.

const term1: RDF.Term | undefined = bindings.get('var1');
const term2: RDF.Term | undefined = bindings.get(DF.variable('var2'));

Bindings.set()

这个 set() 方法用于创建当前绑定对象的副本,并添加一个新的可变绑定. 变量可以作为字符串提供( 不包含 ? 前缀),或作为RDF/JS变量.

const newBindings = bindings
  .set('var1', DF.namedNode('ex:term1'))
  .set(DF.variable('var2'), DF.namedNode('ex:term2'));

Bindings.delete()

这个 delete() 方法用于创建当前绑定对象的副本,并去除可变绑定. 变量可以作为字符串提供( 不包含 ? 前缀),或作为RDF/JS变量.

const newBindings = bindings
  .delete('var1')
  .delete(DF.variable('var2'));

Bindings.keys()

这个 keys() 方法返回对所有 RDF/JS 变量键的可执行性,这些键在此绑定对象中具有值.

for (const variable of bindings.keys()) {
  console.log(variable);
}

Bindings.values()

这个 values() 方法返回所有 RDF/JS 术语中在此绑定对象中有密钥的可移动值.

for (const term of bindings.values()) {
  console.log(term);
}

Bindings.forEach()

这个 forEach() 方法在此绑定对象中的所有条目上延展 并引用每个条目的RDF/JS词组值和RDF/JS可变键的回调.

bindings.forEach((value, key) => {
  console.log(key);
  console.log(value);
})

Bindings.size

这个 size 字段返回绑定对象中键值条目的数量.

console.log(bindings.size);

条目迭代

每个绑定对象都是可以移动的, 每一个条目都是二重奏 [RDF.Variable, RDF.Term]。 。 。 .

// Iterate over all entries
for (const [ key, value ] of bindings) {
  console.log(key);
  console.log(value);
}

// Save the entries in an array
const entries = [ ...bindings ];

Bindings.equals

这个 equals() 如果此绑定对象的条目等于另一个绑定对象的条目,则方法检查.

bindings1.equals(bindings2);

Bindings.filter

这个 filter() 方法通过使用回调过滤条目来创建新的绑定对象. 每个条目都适用回调. 返回真值表示此条目必须包含在产生的绑定对象中.

const filteredBindings = bindings.filter((value, key) => {
  return key.value !== 'abc';
});

Bindings.map

这个 map() 方法通过使用回调绘图条目来创建新的绑定对象. 召回对每个被返回的值所取代的原始值的条目适用.

const mappedBindings = bindings.map((value, key) => {
  return DF.namedNode(value.value + '_modified');
});

Bindings.merge

这个 merge() 方法将这个绑定对象的条目与另一个绑定对象的所有条目合并. 如果发生合并冲突(此等同变量与等同值),则返回未定义的变量.

const mergedBindings = bindings1.merge(bindings2);

Bindings.mergeWith

这个 mergeWith() 方法将此绑定对象与另一个对象合并 其中合并冲突可以使用回调函数解决. 合并冲突发生时引用的回调功能, 中,返回的值被视为合并值.

const mergedBindings = bindings1.mergeWith((self, other, key) => {
  return DF.namedNode(self.value + other.value);
}, bindings2);

Bindings.toString

这个 toString() 方法返回约束对象的紧凑字符串表示, 用于调试.

console.log(bindings.toString());

/*
Can output in the form of:
{
  "a": "ex:a",
  "b": "ex:b",
  "c": "ex:c"
}
 */

版本与发布记录

@comunica/bindings-factory 共发布 55 个版本,首次发布于 2022/02/08;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.3.0latest2024/10/082 年前
3.2.12024/08/072 年前
3.2.02024/07/052 年前
3.1.02024/05/112 年前
3.0.32024/04/122 年前
3.0.12024/03/192 年前

其他发布通道:next → 3.0.1-alpha.46.0。

关于 @comunica/bindings-factory 的常见问题

@comunica/bindings-factory 是什么?

Comunica的装订厂模块

如何安装 @comunica/bindings-factory?

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

@comunica/bindings-factory 支持 TypeScript 吗?

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

@comunica/bindings-factory 支持 ESM 还是 CommonJS?

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

@comunica/bindings-factory 可以商用吗?

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

@comunica/bindings-factory 的下载量有多少?

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

@comunica/bindings-factory 还在维护吗?

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