# @jbr-experiment/ldbc-snb 中文文档

规范地址：https://npmcn.com/package/%40jbr-experiment/ldbc-snb/

版本：6\.3\.0
npm 元数据更新时间：2026-11-01T09:16:15.171Z
中文译文更新时间：2026-11-01T13:19:36.464Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40jbr-experiment/ldbc-snb
原文对照：https://npmcn.com/package/%40jbr-experiment/ldbc-snb/?lang=original
项目主页：https://github.com/rubensworks/jbr.js#readme
源码仓库：https://github.com/rubensworks/jbr.js

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

- 包体积（解压后）：231 kB，69 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：8 个
- peer 依赖：jbr \>=2\.0\.0
- 首次发布：2026-09-25T05:57:41.512Z
- 最新版本发布：2026-11-01T09:16:14.979Z
- 已发布版本数：4（近 12 个月 4 个）

## 中文简介

用于JBR的LDBC社交网络基准（交互和BI）实验处理程序

## 安装

```sh
npm install @jbr-experiment/ldbc-snb
```

也可以使用：`pnpm add @jbr-experiment/ldbc-snb`、`yarn add @jbr-experiment/ldbc-snb`、`bun add @jbr-experiment/ldbc-snb`

## README

# JBR实验- LDBC SNB

[![Build status](https://github.com/rubensworks/jbr.js/workflows/CI/badge.svg)](https://github.com/rubensworks/jbr.js/actions?query=workflow%3ACI) [![Coverage Status](https://coveralls.io/repos/github/rubensworks/jbr.js/badge.svg?branch=master)](https://coveralls.io/github/rubensworks/jbr.js?branch=master) [![npm version](https://badge.fury.io/js/%40jbr-experiment%2Fldbc-snb.svg)](https://www.npmjs.com/package/@jbr-experiment/ldbc-snb)

一、 [jbr](https://github.com/rubensworks/jbr.js/tree/master/packages/jbr) 实验类型 [LDBC社交网络基准（SNB）](https://ldbcouncil.org/benchmarks/snb/) 交互式和商业智能（BI）工作负载； 在单个（集中式）RDF数据集上执行。

数据集是在Turtle中使用 [LDBC SNB Hadoop datagen](https://github.com/rubensworks/ldbc_snb_datagen)， 合并成一个N-Triples文件，并使用SPARQL版本的交互式短查询（IS1-7）和复杂查询（IC1-14）进行查询。 和/或BI （v1, 2018）查询（BI1-24， BI16除外），取决于 `workload` 配置字段。

## 要求

-   [node . js](https://nodejs.org/en/) _（18岁或以上）_
-   [码头工人](https://www.docker.com/) _的调用所必需的 [LDBC SNB数据](https://hub.docker.com/r/rubensworks/ldbc_snb_datagen)）_
-   [jbr](https://github.com/rubensworks/jbr.js/tree/master/packages/jbr) _（需要在命令行上初始化、准备和运行实验）_

## 快速启动

### 1\. 安装jbr

[jbr](https://github.com/rubensworks/jbr.js/tree/master/packages/jbr) 是一个命令行工具，它使实验能够初始化、准备和启动。 它可以从npm注册表中安装：

```bash
$ npm install -g jbr
```

或者

```bash
$ yarn global add jbr
```

### 2\. 初始化新实验

使用 `jbr` CLI工具，初始化一个新的实验：

```bash
$ jbr init ldbc-snb my-experiment
$ cd my-experiment
```

这将创建一个新的 `my-experiment` 这个实验类型的默认配置目录。

### 3\. 配置所需的挂钩

此实验类型要求您配置特定的SPARQL端点，以便将查询发送到 `hookSparqlEndpoint`. 该钩子的值可以按如下方式设置，例如 [`sparql-endpoint-comunica`](https://github.com/rubensworks/jbr.js/tree/master/packages/hook-sparql-endpoint-comunica)：

```bash
$ jbr set-hook hookSparqlEndpoint sparql-endpoint-comunica
```

### 4\. 准备实验

为了运行所有预处理步骤，比如创建所有需要的数据集，调用prepare步骤：

```bash
$ jbr prepare
```

这将执行以下步骤，如果每个步骤的输出已经存在(除非 `jbr prepare -f` 使用):

1.  为配置的比例因子运行LDBC SNB datagen，它将生成Turtle文件和替换参数 `generated/out-snb/`。这也会被跳过 `generated/out-snb/` 已删除，但所有从它派生的文件（步骤2-4）为配置 `workload` 存在，例如在使用预生成的资产时。
2.  将所有Turtle文件合并为一个文件 `generated/dataset.nt` 文件。datagen的空白节点标签是全局唯一的，并被保留。
3.  创建 `generated/parameters-persons.csv` (人 `interactive_1_param.txt`), `generated/parameters-messages.csv` （帖子和评论的种子随机样本）用于简短查询。
4.  将所有交互式查询模板实例化为 `generated/queries/` (如果 `workload` 是 `interactive` 或者 `all`)，以及所有BI查询模板 `generated/queries-bi/` (如果 `workload` 是 `bi` 或者 `all`）. BI查询需要数据源 `bi_N_param.txt` 文件，如果 `generated/out-snb/` ， BI查询只能通过重新生成现有的预生成资产(`jbr prepare -f`）。
5.  可选地将数据集转换为HDT。

所有准备好的文件都将包含在 `generated/` 目录:

```text
generated/
  dataset.hdt                  # If generateHdt is enabled
  dataset.hdt.index.v1-1       # If generateHdt is enabled
  dataset.nt
  out-snb/
    social_network/
      social_network_activity_0_0.ttl
      social_network_person_0_0.ttl
      social_network_static_0_0.ttl
    substitution_parameters/
      bi_1_param.txt
      ...
      interactive_1_param.txt
      ...
  parameters-messages.csv
  parameters-persons.csv
  params.ini
  queries/                     # If workload is interactive or all
    interactive-complex-1.sparql
    ...
    interactive-short-7.sparql
  queries-bi/                  # If workload is bi or all
    bi-1.sparql
    ...
    bi-24.sparql
```

### 5\. 进行实验

一旦实验完全配置好并准备好，您就可以运行它了：

```bash
$ jbr run
```

运行步骤完成后，结果将显示在 `output/` 目录中。

## 输出

实验运行后生成以下输出。

`output/query-times.csv` （每个查询实例化一行，在复制轮上聚合）：

```csv
name;id;error;errorDescription;failures;hash;httpRequests;httpRequestsMax;httpRequestsMin;httpRequestsStd;replication;results;resultsMax;resultsMin;time;timeMax;timeMin;times;timestamps;timestampsMax;timestampsMin;timestampsStd;timeStd;timestampsAll
interactive-short-4;0;false;;0;2e21f854f7ee6112613cc5912d141bdb;0;0;0;0;3;1;1;1;24.666666666666668;28;22;28 24 22;21.666666666666668;24;20;1.699673171197595;2.494438257849294;"[[20],[24],[21]]"
interactive-short-4;1;false;;0;29533521492a24c11be9676db0f16540;0;0;0;0;3;1;1;1;17.666666666666668;23;13;17 23 13;17.666666666666668;23;13;4.109609335312651;4.109609335312651;"[[17],[23],[13]]"
```

在这个旁边， `output/query-results-raw.json` 包含原始查询结果， 和 `output/logs/` 包含数据日志和 `load-time.csv`启动端点和启动测量查询之间的毫秒时间（包括预热轮）。

## 查询

中的查询模板 [`lib/templates/queries/`](https://github.com/rubensworks/jbr.js/tree/master/packages/experiment-ldbc-snb/lib/templates/queries) 的SPARQL查询 [SolidBench](https://github.com/SolidBench/SolidBench.js/tree/master/templates/queries)， 而这些都是基于 [SNB交互式SPARQL实现](https://github.com/ldbc/ldbc_snb_interactive_impls/tree/c19be0e793680497de4e88d360a20708cfcf43a9/sparql/queries)， 使用原版 `http://www.ldbc.eu/ldbc_socialnet/1.0/` 由datagen发出的词汇表。

由于SPARQL没有最短路径运算符， `interactive-complex-13` （单最短路径）只考虑最多4跳的路径（否则返回-1）， 和 `interactive-complex-14` （可信连接路径）只考虑最多3跳的最短路径。

短查询需要一个 `person` 或者 `message` 从生成的CSV文件中提取IRI。 复杂查询从数据源获取参数 `interactive_N_param.txt` 文件。

中的BI查询模板 [`lib/templates/queries-bi/`](https://github.com/rubensworks/jbr.js/tree/master/packages/experiment-ldbc-snb/lib/templates/queries-bi) 都是基于 [SNB BI SPARQL实现](https://github.com/ldbc/ldbc_snb_interactive_v1_impls/tree/c19be0e793680497de4e88d360a20708cfcf43a9/sparql/queries)， 中列出的更改 [他们的自述](https://github.com/rubensworks/jbr.js/tree/master/packages/experiment-ldbc-snb/lib/templates/queries-bi/README.md). 他们从数据源中获取参数 `bi_N_param.txt` 文件。 `bi-16` 被排除，因为它的变长路径边界不能表示为单个模板，和 `bi-25` 被排除，因为它在上游是空的。

所有的参数选择都是确定性的 `querySeed`.

## 配置

默认生成的配置文件(`jbr-experiment.json`)，实验结果如下：

```json
{
  "@context": [
    "https://linkedsoftwaredependencies.org/bundles/npm/jbr/^6.0.0/components/context.jsonld",
    "https://linkedsoftwaredependencies.org/bundles/npm/@jbr-experiment/ldbc-snb/^6.0.0/components/context.jsonld"
  ],
  "@id": "urn:jbr:my-experiment",
  "@type": "ExperimentLdbcSnb",
  "scale": "0.1",
  "hadoopMemory": "4G",
  "queryCount": 5,
  "querySeed": 12345,
  "workload": "interactive",
  "generateHdt": false,
  "endpointUrl": "http://localhost:3001/sparql",
  "endpointUrlExternal": "http://localhost:3001/",
  "queryRunnerReplication": 3,
  "queryRunnerWarmupRounds": 1,
  "queryRunnerRequestDelay": 0,
  "queryRunnerEndpointAvailabilityCheckTimeout": 1000,
  "queryRunnerUrlParams": {},
  "hookSparqlEndpoint": {
    "@id": "urn:jbr:my-experiment:hookSparqlEndpoint",
    "@type": "HookNonConfigured"
  }
}
```

任何配置更改都需要重新运行准备步骤。

### 配置字段

-   `scale`：瑞士央行比例因子，如 `0.1`， `0.3`， `1`， `3`， `10`,……默认为 `0.1`.
-   `hadoopMemory`： Hadoop datagen的最大堆大小，如 `4G`。更高的规模因子需要更多的内存。
-   `queryCount`：每个查询模板的实例化数。对于交互式工作负载，这不能超过数据代理的替换参数文件中的行数。对于BI工作负载，如果文件的行较少(例如 `bi_20_param.txt`，它总是有3行)。
-   `querySeed`：用于选择查询参数的随机种子。
-   `workload`：准备和运行的工作负载： `interactive` (查询 `generated/queries/`)， `bi` (查询 `generated/queries-bi/`),或 `all` (两个)。默认为 `interactive`.
-   `generateHdt`如果…… `dataset.hdt` 也应该生成。
-   `endpointUrl`的SPARQL端点所通过的URL `hookSparqlEndpoint` 胡克会暴露的。
-   `endpointUrlExternal`的SPARQL端点所通过的URL `hookSparqlEndpoint` 胡克会暴露的。这将用于等待端点可用。
-   `queryRunnerReplication`：复制运行数 [`sparql-benchmark-runner`](https://github.com/comunica/sparql-benchmark-runner.js).
-   `queryRunnerWarmupRounds`：热身跑的次数 [`sparql-benchmark-runner`](https://github.com/comunica/sparql-benchmark-runner.js).
-   `queryRunnerRequestDelay`：请求之间的延迟，单位为毫秒 [`sparql-benchmark-runner`](https://github.com/comunica/sparql-benchmark-runner.js).
-   `queryRunnerEndpointAvailabilityCheckTimeout`：检查SPARQL端点是否可用的超时时间（以毫秒为单位）。
-   `queryRunnerUrlParams`：字符串映射的JSON记录，其中包含将传递给SPARQL端点的URL参数。
-   `queryTimeoutFallback`：单个查询的可选超时值（以毫秒为单位），在SPARQL端点钩子超时失败时用作回退。这应该始终高于SPARQL端点钩子中配置的超时值。

## 许可证

j .js是由 [鲁本Taelman](http://www.rubensworks.net/).

本代码版权归 [根特大学- imec](http://idlab.ugent.be/) 并在 [麻省理工学院的许可](http://opensource.org/licenses/MIT).

## 常见问题

### @jbr-experiment/ldbc-snb 是什么？

用于JBR的LDBC社交网络基准（交互和BI）实验处理程序

### 如何安装 @jbr-experiment/ldbc-snb？

在项目目录运行 npm install @jbr-experiment/ldbc-snb，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：jbr（\>=2\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @jbr-experiment/ldbc-snb 支持 TypeScript 吗？

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

### @jbr-experiment/ldbc-snb 支持 ESM 还是 CommonJS？

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

### @jbr-experiment/ldbc-snb 可以商用吗？

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

### @jbr-experiment/ldbc-snb 还在维护吗？

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

