@jbr-experiment/ldbc-snb

中文文档
6.3.0发布于 2026/11/01MITTypeScriptCommonJS

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

中文使用文档
文档目录12 节
  1. 要求
  2. 快速启动
  3. 1. 安装jbr
  4. 2. 初始化新实验
  5. 3. 配置所需的挂钩
  6. 4. 准备实验
  7. 5. 进行实验
  8. 输出
  9. 查询
  10. 配置
  11. 配置字段
  12. 许可证

JBR实验- LDBC SNB

Build status Coverage Status npm version

一、 jbr 实验类型 LDBC社交网络基准(SNB) 交互式和商业智能(BI)工作负载; 在单个(集中式)RDF数据集上执行。

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

要求

快速启动

1. 安装jbr

jbr 是一个命令行工具,它使实验能够初始化、准备和启动。 它可以从npm注册表中安装:

$ npm install -g jbr

或者

$ yarn global add jbr

2. 初始化新实验

使用 jbr CLI工具,初始化一个新的实验:

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

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

3. 配置所需的挂钩

此实验类型要求您配置特定的SPARQL端点,以便将查询发送到 hookSparqlEndpoint. 该钩子的值可以按如下方式设置,例如 sparql-endpoint-comunica:

$ jbr set-hook hookSparqlEndpoint sparql-endpoint-comunica

4. 准备实验

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

$ 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/ 目录:

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. 进行实验

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

$ jbr run

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

输出

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

output/query-times.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/ 的SPARQL查询 SolidBench, 而这些都是基于 SNB交互式SPARQL实现, 使用原版 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/ 都是基于 SNB BI SPARQL实现, 中列出的更改 他们的自述. 他们从数据源中获取参数 bi_N_param.txt 文件。 bi-16 被排除,因为它的变长路径边界不能表示为单个模板,和 bi-25 被排除,因为它在上游是空的。

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

配置

默认生成的配置文件(jbr-experiment.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.
  • queryRunnerWarmupRounds:热身跑的次数 sparql-benchmark-runner.
  • queryRunnerRequestDelay:请求之间的延迟,单位为毫秒 sparql-benchmark-runner.
  • queryRunnerEndpointAvailabilityCheckTimeout:检查SPARQL端点是否可用的超时时间(以毫秒为单位)。
  • queryRunnerUrlParams:字符串映射的JSON记录,其中包含将传递给SPARQL端点的URL参数。
  • queryTimeoutFallback:单个查询的可选超时值(以毫秒为单位),在SPARQL端点钩子超时失败时用作回退。这应该始终高于SPARQL端点钩子中配置的超时值。

许可证

j .js是由 鲁本Taelman.

本代码版权归 根特大学- imec 并在 麻省理工学院的许可.

版本与发布记录

@jbr-experiment/ldbc-snb 共发布 4 个版本,首次发布于 2026/09/25;过去 12 个月发布了 4 个版本。

版本发布日期距今
6.3.0latest2026/11/012 天前
6.2.22026/10/276 天前
6.2.12026/09/251 个月前
6.2.02026/09/251 个月前

关于 @jbr-experiment/ldbc-snb 的常见问题

@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 和提交记录判断。