# @comunica/query-sparql-rdfjs 中文文档

规范地址：https://npmcn.com/package/%40comunica/query-sparql-rdfjs/

版本：5\.4\.1
npm 元数据更新时间：2026-10-22T07:40:18.102Z
中文译文更新时间：2026-11-10T14:42:46.468Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40comunica/query-sparql-rdfjs
原文对照：https://npmcn.com/package/%40comunica/query-sparql-rdfjs/?lang=original
项目主页：https://comunica.dev/
源码仓库：https://github.com/comunica/comunica

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：206 kB，17 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：216 个
- 首次发布：2022-02-08T11:42:52.491Z
- 最新版本发布：2026-09-14T18:11:02.390Z
- 近 30 天下载量：42882（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：106（近 12 个月 16 个）

## 中文简介

对 RDF/JS 源头进行查询的 SPARQL 查询引擎

## 安装

```sh
npm install @comunica/query-sparql-rdfjs
```

也可以使用：`pnpm add @comunica/query-sparql-rdfjs`、`yarn add @comunica/query-sparql-rdfjs`、`bun add @comunica/query-sparql-rdfjs`

## README

# SPARQL RDF/JS

[![npm version](https://badge.fury.io/js/%40comunica%2Fquery-sparql-rdfjs.svg)](https://www.npmjs.com/package/@comunica/query-sparql-rdfjs)

Comunica SPARQL 是 JavaScript 用于查询 RDF/JS 源的 SPARQL 查询引擎 执行 [源接口](http://rdf.js.org/#source-interface)。 。 。 .

这个模块是 [通信框架](https://comunica.dev/)。 。 。 .

## 安装

```bash
$ yarn add @comunica/query-sparql-rdfjs
```

## 查询

```typescript
const QueryEngine = require('@comunica/query-sparql-rdfjs').QueryEngine;
const N3Store = require('n3').Store;
const DataFactory = require('n3').DataFactory;

// This can be any RDFJS source
const store = new N3Store();
store.addQuad(DataFactory.quad(
  DataFactory.namedNode('a'), DataFactory.namedNode('b'), DataFactory.namedNode('http://dbpedia.org/resource/Belgium')));
store.addQuad(DataFactory.quad(
  DataFactory.namedNode('a'), DataFactory.namedNode('b'), DataFactory.namedNode('http://dbpedia.org/resource/Ghent')));

// Create our engine, and query it.
// If you intend to query multiple times, be sure to cache your engine for optimal performance.
const myEngine = new QueryEngine();
const bindingsStream = await myEngine.queryBindings(`
  SELECT ?s ?p ?o WHERE {
    ?s ?p <http://dbpedia.org/resource/Belgium>.
    ?s ?p ?o
  } LIMIT 100`, {
  sources: [store],
});

// Consume results as a stream (best performance)
bindingsStream.on('data', (binding) => {
  console.log(binding.toString()); // Quick way to print bindings for testing

  console.log(binding.has('s')); // Will be true

  // Obtaining values
  console.log(binding.get('s').value);
  console.log(binding.get('s').termType);
  console.log(binding.get('p').value);
  console.log(binding.get('o').value);
});
bindingsStream.on('end', () => {
  // The data-listener will not be called anymore once we get here.
});
bindingsStream.on('error', (error) => {
  console.error(error);
});

// Consume results as async iterable (easier)
for await (const binding of bindingsStream) {
  console.log(binding.toString());
}

// Consume results as an array (easier)
const bindings = await bindingsStream.toArray();
console.log(bindings[0].get('s').value);
console.log(bindings[0].get('s').termType);
```

_[**更多信息** 关于在应用程序中查询](https://comunica.dev/docs/query/getting_started/query_app/)。 。 。 ._

## 更新

```javascript
const QueryEngine = require('@comunica/query-sparql-rdfjs').QueryEngine;
const N3Store = require('n3').Store;

// This can be any RDFJS store
const store = new N3Store();

// Create our engine, and query it.
const myEngine = new QueryEngine();
const query = `
PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT DATA
{
  <http://example/book1> dc:title "A new book" ;
                         dc:creator "A.N.Other" .
}
`;

// Execute the update
await myEngine.queryVoid(query, {
  sources: [store],
});

// Prints '2' => the store is updated
console.log(store.size);
```

_[**更多信息** 在应用程序中更新](https://comunica.dev/docs/query/getting_started/update_app/)。 。 。 ._

## 优化

卢旺达国防军 [源接口](http://rdf.js.org/#source-interface) 默认情况下只曝光 `match` 方法. 为了使Comunica能够制作更有效率的查询计划, 你可以选择曝光一个 `countQuads` 具有与 `match`, (中文(简体) ), 返回一个 `number` 或者说 `Promise<number>` (估计数) 与给定的四分位图案相匹配的四分位数. 当然 `Source` 实施方法也许能够有效地实施这种方法, 这样可以提高查询性能.

如果Comunica没有检测到 `countQuads` 方法,它会回落到低于最佳的计数机制 地点 `match` 将再次调用,以便手动计算匹配次数.

## 常见问题

### @comunica/query-sparql-rdfjs 是什么？

对 RDF/JS 源头进行查询的 SPARQL 查询引擎

### 如何安装 @comunica/query-sparql-rdfjs？

在项目目录运行 npm install @comunica/query-sparql-rdfjs，或使用 pnpm add / yarn add / bun add。

### @comunica/query-sparql-rdfjs 支持 TypeScript 吗？

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

### @comunica/query-sparql-rdfjs 支持 ESM 还是 CommonJS？

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

### @comunica/query-sparql-rdfjs 可以商用吗？

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

### @comunica/query-sparql-rdfjs 的下载量有多少？

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

### @comunica/query-sparql-rdfjs 还在维护吗？

最新版本 5\.4\.1 发布于 2026/09/15（1 个月前）；至今共发布 106 个版本，其中过去 12 个月发布了 16 个；首次发布于 2022/02/08。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

