@undefineds.co/xpod 0.3.58 → 0.3.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (776) hide show
  1. package/README.md +3 -0
  2. package/config/cli.json +88 -0
  3. package/config/cloud.json +32 -1
  4. package/config/components-ignore.json +3 -0
  5. package/config/extensions.local.initializer.json +44 -0
  6. package/config/resolver.json +86 -0
  7. package/config/xpod.base.json +4 -0
  8. package/dist/agents/AgentExecutorFactory.d.ts +3 -3
  9. package/dist/agents/AgentExecutorFactory.js +28 -15
  10. package/dist/agents/AgentExecutorFactory.js.map +1 -1
  11. package/dist/agents/BaseAgentExecutor.d.ts +2 -1
  12. package/dist/agents/BaseAgentExecutor.js +1 -0
  13. package/dist/agents/BaseAgentExecutor.js.map +1 -1
  14. package/dist/agents/ClaudeExecutor.d.ts +3 -1
  15. package/dist/agents/ClaudeExecutor.js +18 -12
  16. package/dist/agents/ClaudeExecutor.js.map +1 -1
  17. package/dist/agents/config/resolve.js +0 -21
  18. package/dist/agents/config/resolve.js.map +1 -1
  19. package/dist/agents/config/types.d.ts +2 -7
  20. package/dist/agents/config/types.js +2 -1
  21. package/dist/agents/config/types.js.map +1 -1
  22. package/dist/agents/types.d.ts +18 -0
  23. package/dist/agents/types.js.map +1 -1
  24. package/dist/ai/schema/types.d.ts +2 -1
  25. package/dist/ai/schema/types.js +1 -0
  26. package/dist/ai/schema/types.js.map +1 -1
  27. package/dist/ai/service/CredentialReader.d.ts +3 -1
  28. package/dist/ai/service/CredentialReader.js.map +1 -1
  29. package/dist/ai/service/CredentialReaderImpl.d.ts +3 -1
  30. package/dist/ai/service/CredentialReaderImpl.js +24 -2
  31. package/dist/ai/service/CredentialReaderImpl.js.map +1 -1
  32. package/dist/ai/service/EmbeddingServiceImpl.js +13 -2
  33. package/dist/ai/service/EmbeddingServiceImpl.js.map +1 -1
  34. package/dist/ai/service/ProviderRegistry.d.ts +4 -0
  35. package/dist/ai/service/ProviderRegistry.js.map +1 -1
  36. package/dist/ai/service/ProviderRegistry.jsonld +4 -0
  37. package/dist/ai/service/ProviderRegistryImpl.d.ts +4 -1
  38. package/dist/ai/service/ProviderRegistryImpl.js +26 -4
  39. package/dist/ai/service/ProviderRegistryImpl.js.map +1 -1
  40. package/dist/ai/service/ProviderRegistryImpl.jsonld +12 -0
  41. package/dist/ai/service/defaultEmbeddingProfile.d.ts +5 -0
  42. package/dist/ai/service/defaultEmbeddingProfile.js +31 -0
  43. package/dist/ai/service/defaultEmbeddingProfile.js.map +1 -0
  44. package/dist/ai/service/index.d.ts +1 -0
  45. package/dist/ai/service/index.js +1 -0
  46. package/dist/ai/service/index.js.map +1 -1
  47. package/dist/ai/service/types.d.ts +1 -0
  48. package/dist/ai/service/types.js.map +1 -1
  49. package/dist/api/ApiServer.js +17 -2
  50. package/dist/api/ApiServer.js.map +1 -1
  51. package/dist/api/ai-gateway/AiGatewayService.d.ts +106 -0
  52. package/dist/api/ai-gateway/AiGatewayService.js +527 -0
  53. package/dist/api/ai-gateway/AiGatewayService.js.map +1 -0
  54. package/dist/api/ai-gateway/auth/AiConnectionInvocationKeyIssuer.d.ts +38 -0
  55. package/dist/api/ai-gateway/auth/AiConnectionInvocationKeyIssuer.js +128 -0
  56. package/dist/api/ai-gateway/auth/AiConnectionInvocationKeyIssuer.js.map +1 -0
  57. package/dist/api/ai-gateway/auth/ClientCredentialsInternalPodAccessTokenProvider.d.ts +25 -0
  58. package/dist/api/ai-gateway/auth/ClientCredentialsInternalPodAccessTokenProvider.js +91 -0
  59. package/dist/api/ai-gateway/auth/ClientCredentialsInternalPodAccessTokenProvider.js.map +1 -0
  60. package/dist/api/ai-gateway/auth/GatewayApiKey.d.ts +28 -0
  61. package/dist/api/ai-gateway/auth/GatewayApiKey.js +162 -0
  62. package/dist/api/ai-gateway/auth/GatewayApiKey.js.map +1 -0
  63. package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.d.ts +56 -0
  64. package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.js +143 -0
  65. package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.js.map +1 -0
  66. package/dist/api/ai-gateway/auth/GatewayKeyLocatorCodec.d.ts +26 -0
  67. package/dist/api/ai-gateway/auth/GatewayKeyLocatorCodec.js +97 -0
  68. package/dist/api/ai-gateway/auth/GatewayKeyLocatorCodec.js.map +1 -0
  69. package/dist/api/ai-gateway/auth/GatewayPrincipal.d.ts +20 -0
  70. package/dist/api/ai-gateway/auth/GatewayPrincipal.js +37 -0
  71. package/dist/api/ai-gateway/auth/GatewayPrincipal.js.map +1 -0
  72. package/dist/api/ai-gateway/auth/InvocationTokenCodec.d.ts +41 -0
  73. package/dist/api/ai-gateway/auth/InvocationTokenCodec.js +221 -0
  74. package/dist/api/ai-gateway/auth/InvocationTokenCodec.js.map +1 -0
  75. package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.d.ts +54 -0
  76. package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.js +152 -0
  77. package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.js.map +1 -0
  78. package/dist/api/ai-gateway/connect/index.d.ts +367 -0
  79. package/dist/api/ai-gateway/connect/index.js +1061 -0
  80. package/dist/api/ai-gateway/connect/index.js.map +1 -0
  81. package/dist/api/ai-gateway/credentials/CloudKmsWrapper.d.ts +40 -0
  82. package/dist/api/ai-gateway/credentials/CloudKmsWrapper.js +59 -0
  83. package/dist/api/ai-gateway/credentials/CloudKmsWrapper.js.map +1 -0
  84. package/dist/api/ai-gateway/credentials/CredentialVault.d.ts +14 -0
  85. package/dist/api/ai-gateway/credentials/CredentialVault.js +11 -0
  86. package/dist/api/ai-gateway/credentials/CredentialVault.js.map +1 -0
  87. package/dist/api/ai-gateway/credentials/KeyWrapper.d.ts +27 -0
  88. package/dist/api/ai-gateway/credentials/KeyWrapper.js +3 -0
  89. package/dist/api/ai-gateway/credentials/KeyWrapper.js.map +1 -0
  90. package/dist/api/ai-gateway/credentials/LocalKeychainWrapper.d.ts +27 -0
  91. package/dist/api/ai-gateway/credentials/LocalKeychainWrapper.js +145 -0
  92. package/dist/api/ai-gateway/credentials/LocalKeychainWrapper.js.map +1 -0
  93. package/dist/api/ai-gateway/credentials/SecretCellCredentialVault.d.ts +13 -0
  94. package/dist/api/ai-gateway/credentials/SecretCellCredentialVault.js +133 -0
  95. package/dist/api/ai-gateway/credentials/SecretCellCredentialVault.js.map +1 -0
  96. package/dist/api/ai-gateway/credentials/SecretCellKeyWrapper.d.ts +23 -0
  97. package/dist/api/ai-gateway/credentials/SecretCellKeyWrapper.js +62 -0
  98. package/dist/api/ai-gateway/credentials/SecretCellKeyWrapper.js.map +1 -0
  99. package/dist/api/ai-gateway/credentials/WebCryptoCredentialVault.d.ts +23 -0
  100. package/dist/api/ai-gateway/credentials/WebCryptoCredentialVault.js +173 -0
  101. package/dist/api/ai-gateway/credentials/WebCryptoCredentialVault.js.map +1 -0
  102. package/dist/api/ai-gateway/errors.d.ts +21 -0
  103. package/dist/api/ai-gateway/errors.js +50 -0
  104. package/dist/api/ai-gateway/errors.js.map +1 -0
  105. package/dist/api/ai-gateway/protocol/ChatCompletionsFrontend.d.ts +6 -0
  106. package/dist/api/ai-gateway/protocol/ChatCompletionsFrontend.js +111 -0
  107. package/dist/api/ai-gateway/protocol/ChatCompletionsFrontend.js.map +1 -0
  108. package/dist/api/ai-gateway/protocol/MessagesFrontend.d.ts +6 -0
  109. package/dist/api/ai-gateway/protocol/MessagesFrontend.js +99 -0
  110. package/dist/api/ai-gateway/protocol/MessagesFrontend.js.map +1 -0
  111. package/dist/api/ai-gateway/protocol/ResponsesFrontend.d.ts +6 -0
  112. package/dist/api/ai-gateway/protocol/ResponsesFrontend.js +232 -0
  113. package/dist/api/ai-gateway/protocol/ResponsesFrontend.js.map +1 -0
  114. package/dist/api/ai-gateway/protocol/index.d.ts +3 -0
  115. package/dist/api/ai-gateway/protocol/index.js +10 -0
  116. package/dist/api/ai-gateway/protocol/index.js.map +1 -0
  117. package/dist/api/ai-gateway/providers/AnthropicRuntimeAdapter.d.ts +7 -0
  118. package/dist/api/ai-gateway/providers/AnthropicRuntimeAdapter.js +37 -0
  119. package/dist/api/ai-gateway/providers/AnthropicRuntimeAdapter.js.map +1 -0
  120. package/dist/api/ai-gateway/providers/BailianRuntimeAdapter.d.ts +9 -0
  121. package/dist/api/ai-gateway/providers/BailianRuntimeAdapter.js +127 -0
  122. package/dist/api/ai-gateway/providers/BailianRuntimeAdapter.js.map +1 -0
  123. package/dist/api/ai-gateway/providers/DeepSeekRuntimeAdapter.d.ts +8 -0
  124. package/dist/api/ai-gateway/providers/DeepSeekRuntimeAdapter.js +47 -0
  125. package/dist/api/ai-gateway/providers/DeepSeekRuntimeAdapter.js.map +1 -0
  126. package/dist/api/ai-gateway/providers/KimiRuntimeAdapter.d.ts +8 -0
  127. package/dist/api/ai-gateway/providers/KimiRuntimeAdapter.js +57 -0
  128. package/dist/api/ai-gateway/providers/KimiRuntimeAdapter.js.map +1 -0
  129. package/dist/api/ai-gateway/providers/OpenAiCompatibleRuntimeAdapter.d.ts +1 -0
  130. package/dist/api/ai-gateway/providers/OpenAiCompatibleRuntimeAdapter.js +6 -0
  131. package/dist/api/ai-gateway/providers/OpenAiCompatibleRuntimeAdapter.js.map +1 -0
  132. package/dist/api/ai-gateway/providers/OpenAiRuntimeAdapter.d.ts +13 -0
  133. package/dist/api/ai-gateway/providers/OpenAiRuntimeAdapter.js +34 -0
  134. package/dist/api/ai-gateway/providers/OpenAiRuntimeAdapter.js.map +1 -0
  135. package/dist/api/ai-gateway/providers/ProviderRegistry.d.ts +68 -0
  136. package/dist/api/ai-gateway/providers/ProviderRegistry.js +288 -0
  137. package/dist/api/ai-gateway/providers/ProviderRegistry.js.map +1 -0
  138. package/dist/api/ai-gateway/providers/ProviderRuntimeAdapter.d.ts +88 -0
  139. package/dist/api/ai-gateway/providers/ProviderRuntimeAdapter.js +645 -0
  140. package/dist/api/ai-gateway/providers/ProviderRuntimeAdapter.js.map +1 -0
  141. package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.d.ts +13 -0
  142. package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.js +48 -0
  143. package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.js.map +1 -0
  144. package/dist/api/ai-gateway/providers/index.d.ts +9 -0
  145. package/dist/api/ai-gateway/providers/index.js +26 -0
  146. package/dist/api/ai-gateway/providers/index.js.map +1 -0
  147. package/dist/api/ai-gateway/quota/AnthropicQuotaAdapter.d.ts +5 -0
  148. package/dist/api/ai-gateway/quota/AnthropicQuotaAdapter.js +21 -0
  149. package/dist/api/ai-gateway/quota/AnthropicQuotaAdapter.js.map +1 -0
  150. package/dist/api/ai-gateway/quota/BailianQuotaAdapter.d.ts +5 -0
  151. package/dist/api/ai-gateway/quota/BailianQuotaAdapter.js +21 -0
  152. package/dist/api/ai-gateway/quota/BailianQuotaAdapter.js.map +1 -0
  153. package/dist/api/ai-gateway/quota/DeepSeekQuotaAdapter.d.ts +10 -0
  154. package/dist/api/ai-gateway/quota/DeepSeekQuotaAdapter.js +83 -0
  155. package/dist/api/ai-gateway/quota/DeepSeekQuotaAdapter.js.map +1 -0
  156. package/dist/api/ai-gateway/quota/KimiQuotaAdapter.d.ts +10 -0
  157. package/dist/api/ai-gateway/quota/KimiQuotaAdapter.js +70 -0
  158. package/dist/api/ai-gateway/quota/KimiQuotaAdapter.js.map +1 -0
  159. package/dist/api/ai-gateway/quota/OpenAiQuotaAdapter.d.ts +5 -0
  160. package/dist/api/ai-gateway/quota/OpenAiQuotaAdapter.js +21 -0
  161. package/dist/api/ai-gateway/quota/OpenAiQuotaAdapter.js.map +1 -0
  162. package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.d.ts +214 -0
  163. package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.js +511 -0
  164. package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.js.map +1 -0
  165. package/dist/api/ai-gateway/quota/index.d.ts +6 -0
  166. package/dist/api/ai-gateway/quota/index.js +23 -0
  167. package/dist/api/ai-gateway/quota/index.js.map +1 -0
  168. package/dist/api/ai-gateway/routing/InMemorySessionAffinityStore.d.ts +26 -0
  169. package/dist/api/ai-gateway/routing/InMemorySessionAffinityStore.js +67 -0
  170. package/dist/api/ai-gateway/routing/InMemorySessionAffinityStore.js.map +1 -0
  171. package/dist/api/ai-gateway/routing/ModelRouter.d.ts +84 -0
  172. package/dist/api/ai-gateway/routing/ModelRouter.js +274 -0
  173. package/dist/api/ai-gateway/routing/ModelRouter.js.map +1 -0
  174. package/dist/api/ai-gateway/routing/RedisSessionAffinityStore.d.ts +39 -0
  175. package/dist/api/ai-gateway/routing/RedisSessionAffinityStore.js +122 -0
  176. package/dist/api/ai-gateway/routing/RedisSessionAffinityStore.js.map +1 -0
  177. package/dist/api/ai-gateway/routing/SessionAffinityStore.d.ts +49 -0
  178. package/dist/api/ai-gateway/routing/SessionAffinityStore.js +66 -0
  179. package/dist/api/ai-gateway/routing/SessionAffinityStore.js.map +1 -0
  180. package/dist/api/ai-gateway/service-access/AiConnectionServiceAccess.d.ts +25 -0
  181. package/dist/api/ai-gateway/service-access/AiConnectionServiceAccess.js +50 -0
  182. package/dist/api/ai-gateway/service-access/AiConnectionServiceAccess.js.map +1 -0
  183. package/dist/api/ai-gateway/types.d.ts +112 -0
  184. package/dist/api/ai-gateway/types.js +305 -0
  185. package/dist/api/ai-gateway/types.js.map +1 -0
  186. package/dist/api/auth/AuthContext.d.ts +18 -3
  187. package/dist/api/auth/AuthContext.js +13 -2
  188. package/dist/api/auth/AuthContext.js.map +1 -1
  189. package/dist/api/auth/Authenticator.d.ts +3 -0
  190. package/dist/api/auth/Authenticator.js.map +1 -1
  191. package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +2 -6
  192. package/dist/api/auth/ClientCredentialsAuthenticator.js +12 -30
  193. package/dist/api/auth/ClientCredentialsAuthenticator.js.map +1 -1
  194. package/dist/api/auth/SolidTokenAuthenticator.d.ts +2 -0
  195. package/dist/api/auth/SolidTokenAuthenticator.js +88 -2
  196. package/dist/api/auth/SolidTokenAuthenticator.js.map +1 -1
  197. package/dist/api/auth/TokenIdentity.d.ts +6 -0
  198. package/dist/api/auth/TokenIdentity.js +31 -0
  199. package/dist/api/auth/TokenIdentity.js.map +1 -0
  200. package/dist/api/chatkit/ai-provider.d.ts +9 -23
  201. package/dist/api/chatkit/ai-provider.js +30 -153
  202. package/dist/api/chatkit/ai-provider.js.map +1 -1
  203. package/dist/api/chatkit/default-agent.d.ts +24 -15
  204. package/dist/api/chatkit/default-agent.js +24 -83
  205. package/dist/api/chatkit/default-agent.js.map +1 -1
  206. package/dist/api/chatkit/index.d.ts +2 -1
  207. package/dist/api/chatkit/index.js +3 -1
  208. package/dist/api/chatkit/index.js.map +1 -1
  209. package/dist/api/chatkit/pod-store.d.ts +13 -1
  210. package/dist/api/chatkit/pod-store.js +127 -7
  211. package/dist/api/chatkit/pod-store.js.map +1 -1
  212. package/dist/api/chatkit/runtime/AcpAgentRuntime.d.ts +0 -1
  213. package/dist/api/chatkit/runtime/AcpAgentRuntime.js +14 -51
  214. package/dist/api/chatkit/runtime/AcpAgentRuntime.js.map +1 -1
  215. package/dist/api/chatkit/runtime/AcpRunner.js +2 -1
  216. package/dist/api/chatkit/runtime/AcpRunner.js.map +1 -1
  217. package/dist/api/chatkit/runtime/CodexRuntimeProjector.d.ts +15 -1
  218. package/dist/api/chatkit/runtime/CodexRuntimeProjector.js +52 -34
  219. package/dist/api/chatkit/runtime/CodexRuntimeProjector.js.map +1 -1
  220. package/dist/api/chatkit/service.d.ts +8 -1
  221. package/dist/api/chatkit/service.js +46 -5
  222. package/dist/api/chatkit/service.js.map +1 -1
  223. package/dist/api/chatkit/store.d.ts +23 -1
  224. package/dist/api/chatkit/store.js +56 -0
  225. package/dist/api/chatkit/store.js.map +1 -1
  226. package/dist/api/chatkit/types.d.ts +1 -0
  227. package/dist/api/chatkit/types.js.map +1 -1
  228. package/dist/api/container/common.js +286 -13
  229. package/dist/api/container/common.js.map +1 -1
  230. package/dist/api/container/index.js +126 -6
  231. package/dist/api/container/index.js.map +1 -1
  232. package/dist/api/container/local.js +50 -6
  233. package/dist/api/container/local.js.map +1 -1
  234. package/dist/api/container/rdf.d.ts +15 -0
  235. package/dist/api/container/rdf.js +90 -0
  236. package/dist/api/container/rdf.js.map +1 -0
  237. package/dist/api/container/routes.js +151 -11
  238. package/dist/api/container/routes.js.map +1 -1
  239. package/dist/api/container/types.d.ts +96 -0
  240. package/dist/api/container/types.js.map +1 -1
  241. package/dist/api/handlers/AdminHandler.d.ts +25 -2
  242. package/dist/api/handlers/AdminHandler.js +60 -10
  243. package/dist/api/handlers/AdminHandler.js.map +1 -1
  244. package/dist/api/handlers/AiClientConfigurationHandler.d.ts +7 -0
  245. package/dist/api/handlers/AiClientConfigurationHandler.js +202 -0
  246. package/dist/api/handlers/AiClientConfigurationHandler.js.map +1 -0
  247. package/dist/api/handlers/AiGatewayHandler.d.ts +23 -0
  248. package/dist/api/handlers/AiGatewayHandler.js +231 -0
  249. package/dist/api/handlers/AiGatewayHandler.js.map +1 -0
  250. package/dist/api/handlers/AiGatewayManagementHandler.d.ts +24 -0
  251. package/dist/api/handlers/AiGatewayManagementHandler.js +503 -0
  252. package/dist/api/handlers/AiGatewayManagementHandler.js.map +1 -0
  253. package/dist/api/handlers/ChatHandler.d.ts +11 -12
  254. package/dist/api/handlers/ChatHandler.js +12 -219
  255. package/dist/api/handlers/ChatHandler.js.map +1 -1
  256. package/dist/api/handlers/DashboardHandler.js +22 -116
  257. package/dist/api/handlers/DashboardHandler.js.map +1 -1
  258. package/dist/api/handlers/NetworkSettingsHandler.d.ts +97 -0
  259. package/dist/api/handlers/NetworkSettingsHandler.js +511 -0
  260. package/dist/api/handlers/NetworkSettingsHandler.js.map +1 -0
  261. package/dist/api/handlers/PodSettingsHandler.d.ts +79 -0
  262. package/dist/api/handlers/PodSettingsHandler.js +162 -0
  263. package/dist/api/handlers/PodSettingsHandler.js.map +1 -0
  264. package/dist/api/handlers/ProvisionHandler.d.ts +3 -1
  265. package/dist/api/handlers/ProvisionHandler.js +22 -87
  266. package/dist/api/handlers/ProvisionHandler.js.map +1 -1
  267. package/dist/api/handlers/RdfStatsHandler.d.ts +6 -0
  268. package/dist/api/handlers/RdfStatsHandler.js +85 -0
  269. package/dist/api/handlers/RdfStatsHandler.js.map +1 -0
  270. package/dist/api/handlers/SettingsHandler.d.ts +5 -0
  271. package/dist/api/handlers/SettingsHandler.js +13 -0
  272. package/dist/api/handlers/SettingsHandler.js.map +1 -0
  273. package/dist/api/handlers/StaticSpaHandler.d.ts +8 -0
  274. package/dist/api/handlers/StaticSpaHandler.js +102 -0
  275. package/dist/api/handlers/StaticSpaHandler.js.map +1 -0
  276. package/dist/api/handlers/index.d.ts +1 -0
  277. package/dist/api/handlers/index.js +1 -0
  278. package/dist/api/handlers/index.js.map +1 -1
  279. package/dist/api/http/readBoundedJsonBody.d.ts +14 -0
  280. package/dist/api/http/readBoundedJsonBody.js +58 -0
  281. package/dist/api/http/readBoundedJsonBody.js.map +1 -0
  282. package/dist/api/middleware/AuthMiddleware.d.ts +1 -0
  283. package/dist/api/middleware/AuthMiddleware.js +33 -4
  284. package/dist/api/middleware/AuthMiddleware.js.map +1 -1
  285. package/dist/api/runs/AgentRuntimeTypes.d.ts +18 -3
  286. package/dist/api/runs/AgentRuntimeTypes.js +61 -0
  287. package/dist/api/runs/AgentRuntimeTypes.js.map +1 -1
  288. package/dist/api/runs/InngestRunExecutionBackend.d.ts +28 -3
  289. package/dist/api/runs/InngestRunExecutionBackend.js +26 -3
  290. package/dist/api/runs/InngestRunExecutionBackend.js.map +1 -1
  291. package/dist/api/runs/ManagedRunWorker.d.ts +4 -1
  292. package/dist/api/runs/ManagedRunWorker.js +39 -8
  293. package/dist/api/runs/ManagedRunWorker.js.map +1 -1
  294. package/dist/api/runs/PiAgentRuntimeDriver.d.ts +5 -1
  295. package/dist/api/runs/PiAgentRuntimeDriver.js +94 -57
  296. package/dist/api/runs/PiAgentRuntimeDriver.js.map +1 -1
  297. package/dist/api/runs/RdfRunContextRetriever.d.ts +46 -0
  298. package/dist/api/runs/RdfRunContextRetriever.js +277 -0
  299. package/dist/api/runs/RdfRunContextRetriever.js.map +1 -0
  300. package/dist/api/runs/RunExecutionBackend.d.ts +38 -0
  301. package/dist/api/runs/RunExecutionBackend.js.map +1 -1
  302. package/dist/api/runs/RunStateCenter.d.ts +18 -3
  303. package/dist/api/runs/RunStateCenter.js +85 -24
  304. package/dist/api/runs/RunStateCenter.js.map +1 -1
  305. package/dist/api/runtime.js +163 -3
  306. package/dist/api/runtime.js.map +1 -1
  307. package/dist/api/service/AiClientConfigurationService.d.ts +97 -0
  308. package/dist/api/service/AiClientConfigurationService.js +379 -0
  309. package/dist/api/service/AiClientConfigurationService.js.map +1 -0
  310. package/dist/api/service/RdfBenchmarkReportCatalog.d.ts +86 -0
  311. package/dist/api/service/RdfBenchmarkReportCatalog.js +349 -0
  312. package/dist/api/service/RdfBenchmarkReportCatalog.js.map +1 -0
  313. package/dist/api/service/RdfBenchmarkReportGate.d.ts +78 -0
  314. package/dist/api/service/RdfBenchmarkReportGate.js +197 -0
  315. package/dist/api/service/RdfBenchmarkReportGate.js.map +1 -0
  316. package/dist/api/service/RdfSearchIndexingService.d.ts +113 -0
  317. package/dist/api/service/RdfSearchIndexingService.js +272 -0
  318. package/dist/api/service/RdfSearchIndexingService.js.map +1 -0
  319. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.d.ts +27 -0
  320. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js +90 -0
  321. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js.map +1 -0
  322. package/dist/api/service/RdfStorageStatsService.d.ts +31 -0
  323. package/dist/api/service/RdfStorageStatsService.js +97 -0
  324. package/dist/api/service/RdfStorageStatsService.js.map +1 -0
  325. package/dist/api/service/VectorStoreService.d.ts +2 -0
  326. package/dist/api/service/VectorStoreService.js +70 -2
  327. package/dist/api/service/VectorStoreService.js.map +1 -1
  328. package/dist/api/service/VercelChatService.d.ts +27 -38
  329. package/dist/api/service/VercelChatService.js +153 -505
  330. package/dist/api/service/VercelChatService.js.map +1 -1
  331. package/dist/api/service/provider-http-transport.d.ts +21 -0
  332. package/dist/api/service/provider-http-transport.js +108 -2
  333. package/dist/api/service/provider-http-transport.js.map +1 -1
  334. package/dist/api/service/provider-registry.d.ts +5 -7
  335. package/dist/api/service/provider-registry.js +81 -64
  336. package/dist/api/service/provider-registry.js.map +1 -1
  337. package/dist/api/tasks/InngestTaskScheduler.d.ts +44 -4
  338. package/dist/api/tasks/TaskMaterializer.d.ts +10 -1
  339. package/dist/api/tasks/TaskMaterializer.js +39 -4
  340. package/dist/api/tasks/TaskMaterializer.js.map +1 -1
  341. package/dist/api/tasks/TaskService.d.ts +5 -1
  342. package/dist/api/tasks/TaskService.js +3 -0
  343. package/dist/api/tasks/TaskService.js.map +1 -1
  344. package/dist/cli/commands/rdf.d.ts +9 -0
  345. package/dist/cli/commands/rdf.js +66 -1
  346. package/dist/cli/commands/rdf.js.map +1 -1
  347. package/dist/cli/commands/start.js +3 -0
  348. package/dist/cli/commands/start.js.map +1 -1
  349. package/dist/cli/lib/solid-auth.d.ts +3 -3
  350. package/dist/cli/lib/solid-auth.js +4 -4
  351. package/dist/cli/lib/solid-auth.js.map +1 -1
  352. package/dist/components/components.jsonld +16 -0
  353. package/dist/components/context.jsonld +815 -28
  354. package/dist/document/Chunker.jsonld +110 -0
  355. package/dist/document/{DocumentParser.d.ts → DocumentReader.d.ts} +23 -11
  356. package/dist/document/{DocumentParser.js → DocumentReader.js} +2 -2
  357. package/dist/document/DocumentReader.js.map +1 -0
  358. package/dist/document/DocumentReader.jsonld +82 -0
  359. package/dist/document/HeadingChunker.jsonld +41 -0
  360. package/dist/document/{JinaDocumentParser.d.ts → JinaReader.d.ts} +7 -7
  361. package/dist/document/{JinaDocumentParser.js → JinaReader.js} +12 -12
  362. package/dist/document/JinaReader.js.map +1 -0
  363. package/dist/document/JinaReader.jsonld +133 -0
  364. package/dist/document/L0SourceSummary.d.ts +103 -0
  365. package/dist/document/L0SourceSummary.js +157 -0
  366. package/dist/document/L0SourceSummary.js.map +1 -0
  367. package/dist/document/L0SourceSummary.jsonld +326 -0
  368. package/dist/document/PaddleOcrReader.d.ts +40 -0
  369. package/dist/document/PaddleOcrReader.js +53 -0
  370. package/dist/document/PaddleOcrReader.js.map +1 -0
  371. package/dist/document/PaddleOcrReader.jsonld +234 -0
  372. package/dist/document/ReaderAiConfig.d.ts +50 -0
  373. package/dist/document/ReaderAiConfig.js +109 -0
  374. package/dist/document/ReaderAiConfig.js.map +1 -0
  375. package/dist/document/ReaderAiConfig.jsonld +185 -0
  376. package/dist/document/ReaderPolicy.d.ts +89 -0
  377. package/dist/document/ReaderPolicy.js +158 -0
  378. package/dist/document/ReaderPolicy.js.map +1 -0
  379. package/dist/document/ReaderPolicy.jsonld +218 -0
  380. package/dist/document/index.d.ts +6 -2
  381. package/dist/document/index.js +6 -2
  382. package/dist/document/index.js.map +1 -1
  383. package/dist/edge/DdnsManager.d.ts +1 -1
  384. package/dist/edge/DdnsManager.js.map +1 -1
  385. package/dist/edge/EdgeNodeAgent.d.ts +4 -0
  386. package/dist/edge/EdgeNodeAgent.js +6 -0
  387. package/dist/edge/EdgeNodeAgent.js.map +1 -1
  388. package/dist/edge/EdgeNodeAgent.jsonld +8 -0
  389. package/dist/edge/EdgeNodeAgentInitializer.d.ts +16 -0
  390. package/dist/edge/EdgeNodeAgentInitializer.js +51 -0
  391. package/dist/edge/EdgeNodeAgentInitializer.js.map +1 -1
  392. package/dist/edge/EdgeNodeAgentInitializer.jsonld +250 -0
  393. package/dist/edge/EdgeNodeCertificateCapabilityBridge.d.ts +34 -0
  394. package/dist/edge/EdgeNodeCertificateCapabilityBridge.js +111 -0
  395. package/dist/edge/EdgeNodeCertificateCapabilityBridge.js.map +1 -0
  396. package/dist/edge/acme/AcmeCertificateManager.d.ts +14 -1
  397. package/dist/edge/acme/AcmeCertificateManager.js +67 -7
  398. package/dist/edge/acme/AcmeCertificateManager.js.map +1 -1
  399. package/dist/edge/acme/AcmeCertificateManager.jsonld +22 -2
  400. package/dist/edge/acme/ClusterCertificateManager.d.ts +12 -0
  401. package/dist/edge/acme/ClusterCertificateManager.js +38 -0
  402. package/dist/edge/acme/ClusterCertificateManager.js.map +1 -1
  403. package/dist/extensions/ExtensionRuntime.d.ts +17 -0
  404. package/dist/extensions/ExtensionRuntime.js +171 -0
  405. package/dist/extensions/ExtensionRuntime.js.map +1 -0
  406. package/dist/extensions/PodCredentialResolver.d.ts +23 -0
  407. package/dist/extensions/PodCredentialResolver.js +139 -0
  408. package/dist/extensions/PodCredentialResolver.js.map +1 -0
  409. package/dist/extensions/index.d.ts +3 -0
  410. package/dist/extensions/index.js +20 -0
  411. package/dist/extensions/index.js.map +1 -0
  412. package/dist/extensions/types.d.ts +73 -0
  413. package/dist/extensions/types.js +3 -0
  414. package/dist/extensions/types.js.map +1 -0
  415. package/dist/http/SubgraphSparqlHttpHandler.d.ts +20 -1
  416. package/dist/http/SubgraphSparqlHttpHandler.js +324 -43
  417. package/dist/http/SubgraphSparqlHttpHandler.js.map +1 -1
  418. package/dist/http/SubgraphSparqlHttpHandler.jsonld +87 -0
  419. package/dist/identity/drizzle/EdgeNodeRepository.js +3 -2
  420. package/dist/identity/drizzle/EdgeNodeRepository.js.map +1 -1
  421. package/dist/identity/drizzle/schema.pg.js +1 -1
  422. package/dist/identity/drizzle/schema.pg.js.map +1 -1
  423. package/dist/identity/drizzle/schema.sqlite.js +1 -1
  424. package/dist/identity/drizzle/schema.sqlite.js.map +1 -1
  425. package/dist/identity/oidc/ScopedPickWebIdHandler.js +5 -5
  426. package/dist/identity/oidc/ScopedPickWebIdHandler.js.map +1 -1
  427. package/dist/index.d.ts +12 -2
  428. package/dist/index.js +13 -1
  429. package/dist/index.js.map +1 -1
  430. package/dist/main.js +3 -0
  431. package/dist/main.js.map +1 -1
  432. package/dist/provision/LocalProvisionState.d.ts +28 -0
  433. package/dist/provision/LocalProvisionState.js +124 -0
  434. package/dist/provision/LocalProvisionState.js.map +1 -0
  435. package/dist/provision/ProvisionCodeCodec.d.ts +7 -3
  436. package/dist/provision/ProvisionCodeCodec.js +10 -3
  437. package/dist/provision/ProvisionCodeCodec.js.map +1 -1
  438. package/dist/provision/ProvisionPodCreator.d.ts +15 -1
  439. package/dist/provision/ProvisionPodCreator.js +68 -1
  440. package/dist/provision/ProvisionPodCreator.js.map +1 -1
  441. package/dist/provision/ProvisionPodCreator.jsonld +31 -0
  442. package/dist/provision/ServiceAccessTokenCodec.d.ts +45 -0
  443. package/dist/provision/ServiceAccessTokenCodec.js +86 -0
  444. package/dist/provision/ServiceAccessTokenCodec.js.map +1 -0
  445. package/dist/runtime/GatewayAdminProxyAuth.d.ts +29 -0
  446. package/dist/runtime/GatewayAdminProxyAuth.js +108 -0
  447. package/dist/runtime/GatewayAdminProxyAuth.js.map +1 -0
  448. package/dist/runtime/Proxy.d.ts +10 -0
  449. package/dist/runtime/Proxy.js +64 -6
  450. package/dist/runtime/Proxy.js.map +1 -1
  451. package/dist/runtime/XpodRuntime.js +1 -0
  452. package/dist/runtime/XpodRuntime.js.map +1 -1
  453. package/dist/runtime/bootstrap.d.ts +1 -0
  454. package/dist/runtime/bootstrap.js +29 -0
  455. package/dist/runtime/bootstrap.js.map +1 -1
  456. package/dist/runtime/css-process.d.ts +1 -0
  457. package/dist/runtime/css-process.js +1 -0
  458. package/dist/runtime/css-process.js.map +1 -1
  459. package/dist/runtime/index.d.ts +1 -0
  460. package/dist/runtime/index.js +3 -1
  461. package/dist/runtime/index.js.map +1 -1
  462. package/dist/runtime/lifecycle.d.ts +3 -1
  463. package/dist/runtime/lifecycle.js +3 -1
  464. package/dist/runtime/lifecycle.js.map +1 -1
  465. package/dist/runtime/runner/node/NodeGatewayRuntimeRunner.js +2 -0
  466. package/dist/runtime/runner/node/NodeGatewayRuntimeRunner.js.map +1 -1
  467. package/dist/runtime/runner/types.d.ts +3 -0
  468. package/dist/runtime/runner/types.js.map +1 -1
  469. package/dist/runtime/runtime-types.d.ts +2 -0
  470. package/dist/runtime/runtime-types.js.map +1 -1
  471. package/dist/runtime/safe-env.d.ts +15 -0
  472. package/dist/runtime/safe-env.js +109 -0
  473. package/dist/runtime/safe-env.js.map +1 -0
  474. package/dist/security/index.d.ts +1 -0
  475. package/dist/security/index.js +18 -0
  476. package/dist/security/index.js.map +1 -0
  477. package/dist/security/secret-cell/DeploymentRootKeyProvider.d.ts +17 -0
  478. package/dist/security/secret-cell/DeploymentRootKeyProvider.js +61 -0
  479. package/dist/security/secret-cell/DeploymentRootKeyProvider.js.map +1 -0
  480. package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +124 -0
  481. package/dist/security/secret-cell/SecretCellVault.d.ts +55 -0
  482. package/dist/security/secret-cell/SecretCellVault.js +242 -0
  483. package/dist/security/secret-cell/SecretCellVault.js.map +1 -0
  484. package/dist/security/secret-cell/SecretCellVault.jsonld +207 -0
  485. package/dist/security/secret-cell/index.d.ts +2 -0
  486. package/dist/security/secret-cell/index.js +11 -0
  487. package/dist/security/secret-cell/index.js.map +1 -0
  488. package/dist/solidfs/CompositeSolidFsSyncer.d.ts +18 -0
  489. package/dist/solidfs/CompositeSolidFsSyncer.js +32 -0
  490. package/dist/solidfs/CompositeSolidFsSyncer.js.map +1 -0
  491. package/dist/solidfs/LocalSolidFS.js +25 -1
  492. package/dist/solidfs/LocalSolidFS.js.map +1 -1
  493. package/dist/solidfs/RdfIndexSolidFsSyncer.d.ts +41 -2
  494. package/dist/solidfs/RdfIndexSolidFsSyncer.js +331 -21
  495. package/dist/solidfs/RdfIndexSolidFsSyncer.js.map +1 -1
  496. package/dist/solidfs/SolidFsMetaNotes.d.ts +25 -0
  497. package/dist/solidfs/SolidFsMetaNotes.js +103 -0
  498. package/dist/solidfs/SolidFsMetaNotes.js.map +1 -0
  499. package/dist/solidfs/SolidFsSyncJournal.d.ts +2 -2
  500. package/dist/solidfs/SolidFsSyncJournal.js +9 -4
  501. package/dist/solidfs/SolidFsSyncJournal.js.map +1 -1
  502. package/dist/solidfs/SolidFsSyncJournal.jsonld +119 -0
  503. package/dist/solidfs/WorkspacePrompt.d.ts +13 -0
  504. package/dist/solidfs/WorkspacePrompt.js +42 -0
  505. package/dist/solidfs/WorkspacePrompt.js.map +1 -0
  506. package/dist/solidfs/index.d.ts +3 -0
  507. package/dist/solidfs/index.js +3 -0
  508. package/dist/solidfs/index.js.map +1 -1
  509. package/dist/solidfs/types.d.ts +12 -2
  510. package/dist/solidfs/types.js.map +1 -1
  511. package/dist/storage/accessors/MixDataAccessor.d.ts +36 -4
  512. package/dist/storage/accessors/MixDataAccessor.js +222 -23
  513. package/dist/storage/accessors/MixDataAccessor.js.map +1 -1
  514. package/dist/storage/accessors/MixDataAccessor.jsonld +89 -0
  515. package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +6 -1
  516. package/dist/storage/accessors/SolidRdfDataAccessor.js +35 -0
  517. package/dist/storage/accessors/SolidRdfDataAccessor.js.map +1 -1
  518. package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +20 -0
  519. package/dist/storage/database/PostgresPoolManager.d.ts +1 -0
  520. package/dist/storage/database/PostgresPoolManager.js +2 -2
  521. package/dist/storage/database/PostgresPoolManager.js.map +1 -1
  522. package/dist/storage/locking/UrlAwareRedisLocker.d.ts +2 -0
  523. package/dist/storage/locking/UrlAwareRedisLocker.js +65 -0
  524. package/dist/storage/locking/UrlAwareRedisLocker.js.map +1 -1
  525. package/dist/storage/locking/UrlAwareRedisLocker.jsonld +19 -0
  526. package/dist/storage/rdf/PostgresRdfEngine.d.ts +286 -9
  527. package/dist/storage/rdf/PostgresRdfEngine.js +10773 -2084
  528. package/dist/storage/rdf/PostgresRdfEngine.js.map +1 -1
  529. package/dist/storage/rdf/PostgresRdfEngine.jsonld +1693 -89
  530. package/dist/storage/rdf/PostgresRdfSqlExecutor.d.ts +24 -0
  531. package/dist/storage/rdf/PostgresRdfSqlExecutor.js +131 -0
  532. package/dist/storage/rdf/PostgresRdfSqlExecutor.js.map +1 -0
  533. package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +54 -0
  534. package/dist/storage/rdf/PostgresRdfTextIndex.js +1255 -0
  535. package/dist/storage/rdf/PostgresRdfTextIndex.js.map +1 -0
  536. package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +487 -0
  537. package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +46 -0
  538. package/dist/storage/rdf/PostgresRdfVectorIndex.js +1165 -0
  539. package/dist/storage/rdf/PostgresRdfVectorIndex.js.map +1 -0
  540. package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +423 -0
  541. package/dist/storage/rdf/Rdf3xIndex.d.ts +14 -1
  542. package/dist/storage/rdf/Rdf3xIndex.js +286 -2
  543. package/dist/storage/rdf/Rdf3xIndex.js.map +1 -1
  544. package/dist/storage/rdf/Rdf3xIndex.jsonld +36 -0
  545. package/dist/storage/rdf/Rdf3xSchema.d.ts +5 -1
  546. package/dist/storage/rdf/Rdf3xSchema.js +17 -3
  547. package/dist/storage/rdf/Rdf3xSchema.js.map +1 -1
  548. package/dist/storage/rdf/RdfAccessScope.d.ts +22 -0
  549. package/dist/storage/rdf/RdfAccessScope.js +345 -0
  550. package/dist/storage/rdf/RdfAccessScope.js.map +1 -0
  551. package/dist/storage/rdf/RdfAccessScope.jsonld +45 -0
  552. package/dist/storage/rdf/RdfFusionRankPlan.d.ts +2 -0
  553. package/dist/storage/rdf/RdfFusionRankPlan.js +186 -0
  554. package/dist/storage/rdf/RdfFusionRankPlan.js.map +1 -0
  555. package/dist/storage/rdf/RdfJoinShape.d.ts +8 -0
  556. package/dist/storage/rdf/RdfJoinShape.js +31 -0
  557. package/dist/storage/rdf/RdfJoinShape.js.map +1 -0
  558. package/dist/storage/rdf/RdfQuadIndex.d.ts +5 -2
  559. package/dist/storage/rdf/RdfQuadIndex.js +94 -6
  560. package/dist/storage/rdf/RdfQuadIndex.js.map +1 -1
  561. package/dist/storage/rdf/RdfQuadIndex.jsonld +12 -0
  562. package/dist/storage/rdf/RdfQueryExecutor.d.ts +3 -4
  563. package/dist/storage/rdf/RdfQueryExecutor.js +235 -8
  564. package/dist/storage/rdf/RdfQueryExecutor.js.map +1 -1
  565. package/dist/storage/rdf/RdfSearchSourceFilter.d.ts +10 -0
  566. package/dist/storage/rdf/RdfSearchSourceFilter.js +83 -0
  567. package/dist/storage/rdf/RdfSearchSourceFilter.js.map +1 -0
  568. package/dist/storage/rdf/RdfSparqlAdapter.d.ts +27 -1
  569. package/dist/storage/rdf/RdfSparqlAdapter.js +265 -3
  570. package/dist/storage/rdf/RdfSparqlAdapter.js.map +1 -1
  571. package/dist/storage/rdf/RdfSparqlAdapter.jsonld +8 -0
  572. package/dist/storage/rdf/RdfTermDictionary.d.ts +7 -1
  573. package/dist/storage/rdf/RdfTermDictionary.js +139 -0
  574. package/dist/storage/rdf/RdfTermDictionary.js.map +1 -1
  575. package/dist/storage/rdf/RdfTermDictionary.jsonld +4 -0
  576. package/dist/storage/rdf/RdfTextIndex.d.ts +45 -2
  577. package/dist/storage/rdf/RdfTextIndex.js +810 -114
  578. package/dist/storage/rdf/RdfTextIndex.js.map +1 -1
  579. package/dist/storage/rdf/RdfTextIndex.jsonld +193 -0
  580. package/dist/storage/rdf/RdfTextProjection.d.ts +10 -0
  581. package/dist/storage/rdf/RdfTextProjection.js +258 -0
  582. package/dist/storage/rdf/RdfTextProjection.js.map +1 -0
  583. package/dist/storage/rdf/RdfVectorIndex.d.ts +30 -2
  584. package/dist/storage/rdf/RdfVectorIndex.js +461 -38
  585. package/dist/storage/rdf/RdfVectorIndex.js.map +1 -1
  586. package/dist/storage/rdf/RdfVectorIndex.jsonld +163 -0
  587. package/dist/storage/rdf/SolidRdfEngine.d.ts +12 -9
  588. package/dist/storage/rdf/SolidRdfEngine.js +48 -22
  589. package/dist/storage/rdf/SolidRdfEngine.js.map +1 -1
  590. package/dist/storage/rdf/SolidRdfEngine.jsonld +33 -43
  591. package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +19 -8
  592. package/dist/storage/rdf/SolidRdfSparqlEngine.js +674 -44
  593. package/dist/storage/rdf/SolidRdfSparqlEngine.js.map +1 -1
  594. package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +51 -0
  595. package/dist/storage/rdf/index.d.ts +9 -5
  596. package/dist/storage/rdf/index.js +42 -1
  597. package/dist/storage/rdf/index.js.map +1 -1
  598. package/dist/storage/rdf/models-benchmark.d.ts +264 -2
  599. package/dist/storage/rdf/models-benchmark.js +4207 -155
  600. package/dist/storage/rdf/models-benchmark.js.map +1 -1
  601. package/dist/storage/rdf/types.d.ts +833 -4
  602. package/dist/storage/rdf/types.js.map +1 -1
  603. package/dist/storage/rdf/types.jsonld +348 -0
  604. package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +14 -13
  605. package/dist/storage/sparql/CompatibilitySparqlEngine.js +24 -24
  606. package/dist/storage/sparql/CompatibilitySparqlEngine.js.map +1 -1
  607. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +14 -13
  608. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +30 -18
  609. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js.map +1 -1
  610. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +21 -12
  611. package/dist/storage/sparql/SubgraphQueryEngine.js +12 -12
  612. package/dist/storage/sparql/SubgraphQueryEngine.js.map +1 -1
  613. package/dist/terminal/sandbox/MacOSSandbox.js +2 -1
  614. package/dist/terminal/sandbox/MacOSSandbox.js.map +1 -1
  615. package/dist/terminal/sandbox/index.js +2 -1
  616. package/dist/terminal/sandbox/index.js.map +1 -1
  617. package/dist/test-utils/no-auth-xpod.js +3 -0
  618. package/dist/test-utils/no-auth-xpod.js.map +1 -1
  619. package/dist/tunnel/LocalTunnelProvider.d.ts +3 -0
  620. package/dist/tunnel/LocalTunnelProvider.js +17 -1
  621. package/dist/tunnel/LocalTunnelProvider.js.map +1 -1
  622. package/dist/tunnel/LocalTunnelProvider.jsonld +23 -0
  623. package/dist/tunnel/SakuraFrpTunnelProvider.d.ts +3 -0
  624. package/dist/tunnel/SakuraFrpTunnelProvider.js +18 -2
  625. package/dist/tunnel/SakuraFrpTunnelProvider.js.map +1 -1
  626. package/dist/tunnel/TunnelProfiles.d.ts +22 -0
  627. package/dist/tunnel/TunnelProfiles.js +208 -0
  628. package/dist/tunnel/TunnelProfiles.js.map +1 -0
  629. package/dist/tunnel/index.d.ts +2 -0
  630. package/dist/tunnel/index.js +4 -1
  631. package/dist/tunnel/index.js.map +1 -1
  632. package/dist/util/identifiers/ClusterIdentifierStrategy.d.ts +3 -0
  633. package/dist/util/identifiers/ClusterIdentifierStrategy.js +18 -2
  634. package/dist/util/identifiers/ClusterIdentifierStrategy.js.map +1 -1
  635. package/dist/util/identifiers/ClusterIdentifierStrategy.jsonld +5 -1
  636. package/node_modules/@undefineds.co/ai-connection/dist/AiClientConfigurationSection.d.ts +55 -0
  637. package/node_modules/@undefineds.co/ai-connection/dist/AiClientConfigurationSection.js +167 -0
  638. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionHeader.d.ts +3 -0
  639. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionHeader.js +8 -0
  640. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionList.d.ts +4 -0
  641. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionList.js +36 -0
  642. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMain.d.ts +4 -0
  643. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMain.js +37 -0
  644. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMainHeader.d.ts +3 -0
  645. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMainHeader.js +7 -0
  646. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionPanel.d.ts +14 -0
  647. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionPanel.js +333 -0
  648. package/node_modules/@undefineds.co/ai-connection/dist/AiProviderCard.d.ts +22 -0
  649. package/node_modules/@undefineds.co/ai-connection/dist/AiProviderCard.js +43 -0
  650. package/node_modules/@undefineds.co/ai-connection/dist/AiQuotaCard.d.ts +8 -0
  651. package/node_modules/@undefineds.co/ai-connection/dist/AiQuotaCard.js +6 -0
  652. package/node_modules/@undefineds.co/ai-connection/dist/ai-connection-client.d.ts +120 -0
  653. package/node_modules/@undefineds.co/ai-connection/dist/ai-connection-client.js +414 -0
  654. package/node_modules/@undefineds.co/ai-connection/dist/client-config/base-adapter.d.ts +32 -0
  655. package/node_modules/@undefineds.co/ai-connection/dist/client-config/base-adapter.js +212 -0
  656. package/node_modules/@undefineds.co/ai-connection/dist/client-config/codex.d.ts +14 -0
  657. package/node_modules/@undefineds.co/ai-connection/dist/client-config/codex.js +90 -0
  658. package/node_modules/@undefineds.co/ai-connection/dist/client-config/index.cjs +668 -0
  659. package/node_modules/@undefineds.co/ai-connection/dist/client-config/index.d.ts +6 -0
  660. package/node_modules/@undefineds.co/ai-connection/dist/client-config/index.js +6 -0
  661. package/node_modules/@undefineds.co/ai-connection/dist/client-config/json-env-adapter.d.ts +21 -0
  662. package/node_modules/@undefineds.co/ai-connection/dist/client-config/json-env-adapter.js +82 -0
  663. package/node_modules/@undefineds.co/ai-connection/dist/client-config/pi.d.ts +13 -0
  664. package/node_modules/@undefineds.co/ai-connection/dist/client-config/pi.js +83 -0
  665. package/node_modules/@undefineds.co/ai-connection/dist/client-config/transaction.d.ts +17 -0
  666. package/node_modules/@undefineds.co/ai-connection/dist/client-config/transaction.js +153 -0
  667. package/node_modules/@undefineds.co/ai-connection/dist/client-config/types.d.ts +40 -0
  668. package/node_modules/@undefineds.co/ai-connection/dist/client-config/types.js +1 -0
  669. package/node_modules/@undefineds.co/ai-connection/dist/controller.d.ts +42 -0
  670. package/node_modules/@undefineds.co/ai-connection/dist/controller.js +289 -0
  671. package/node_modules/@undefineds.co/ai-connection/dist/index.d.ts +16 -0
  672. package/node_modules/@undefineds.co/ai-connection/dist/index.js +41 -0
  673. package/node_modules/@undefineds.co/ai-connection/dist/manifest.d.ts +1 -0
  674. package/node_modules/@undefineds.co/ai-connection/dist/manifest.js +18 -0
  675. package/node_modules/@undefineds.co/ai-connection/dist/service-access.d.ts +3 -0
  676. package/node_modules/@undefineds.co/ai-connection/dist/service-access.js +133 -0
  677. package/node_modules/@undefineds.co/ai-connection/package.json +50 -0
  678. package/node_modules/@undefineds.co/extension-sdk/README.md +299 -0
  679. package/node_modules/@undefineds.co/extension-sdk/dist/index.d.ts +5 -0
  680. package/node_modules/@undefineds.co/extension-sdk/dist/index.js +5 -0
  681. package/node_modules/@undefineds.co/extension-sdk/dist/layout.d.ts +16 -0
  682. package/node_modules/@undefineds.co/extension-sdk/dist/layout.js +36 -0
  683. package/node_modules/@undefineds.co/extension-sdk/dist/manifest.d.ts +27 -0
  684. package/node_modules/@undefineds.co/extension-sdk/dist/manifest.js +79 -0
  685. package/node_modules/@undefineds.co/extension-sdk/dist/react/app-layout.d.ts +7 -0
  686. package/node_modules/@undefineds.co/extension-sdk/dist/react/app-layout.js +8 -0
  687. package/node_modules/@undefineds.co/extension-sdk/dist/react/auth-boundary.d.ts +27 -0
  688. package/node_modules/@undefineds.co/extension-sdk/dist/react/auth-boundary.js +49 -0
  689. package/node_modules/@undefineds.co/extension-sdk/dist/react/layout-context.d.ts +11 -0
  690. package/node_modules/@undefineds.co/extension-sdk/dist/react/layout-context.js +9 -0
  691. package/node_modules/@undefineds.co/extension-sdk/dist/react/workspace-layout.d.ts +38 -0
  692. package/node_modules/@undefineds.co/extension-sdk/dist/react/workspace-layout.js +132 -0
  693. package/node_modules/@undefineds.co/extension-sdk/dist/react.d.ts +12 -0
  694. package/node_modules/@undefineds.co/extension-sdk/dist/react.js +19 -0
  695. package/node_modules/@undefineds.co/extension-sdk/dist/testing.d.ts +7 -0
  696. package/node_modules/@undefineds.co/extension-sdk/dist/testing.js +27 -0
  697. package/node_modules/@undefineds.co/extension-sdk/dist/web.d.ts +225 -0
  698. package/node_modules/@undefineds.co/extension-sdk/dist/web.js +142 -0
  699. package/node_modules/@undefineds.co/extension-sdk/package.json +49 -0
  700. package/node_modules/@undefineds.co/shared-ui/dist/badge.d.ts +8 -0
  701. package/node_modules/@undefineds.co/shared-ui/dist/badge.js +17 -0
  702. package/node_modules/@undefineds.co/shared-ui/dist/button.d.ts +10 -0
  703. package/node_modules/@undefineds.co/shared-ui/dist/button.js +30 -0
  704. package/node_modules/@undefineds.co/shared-ui/dist/card.d.ts +7 -0
  705. package/node_modules/@undefineds.co/shared-ui/dist/card.js +15 -0
  706. package/node_modules/@undefineds.co/shared-ui/dist/index.d.ts +6 -0
  707. package/node_modules/@undefineds.co/shared-ui/dist/index.js +6 -0
  708. package/node_modules/@undefineds.co/shared-ui/dist/input.d.ts +4 -0
  709. package/node_modules/@undefineds.co/shared-ui/dist/input.js +5 -0
  710. package/node_modules/@undefineds.co/shared-ui/dist/theme.css +121 -0
  711. package/node_modules/@undefineds.co/shared-ui/dist/utils.d.ts +2 -0
  712. package/node_modules/@undefineds.co/shared-ui/dist/utils.js +5 -0
  713. package/node_modules/@undefineds.co/shared-ui/dist/workspace.d.ts +23 -0
  714. package/node_modules/@undefineds.co/shared-ui/dist/workspace.js +38 -0
  715. package/node_modules/@undefineds.co/shared-ui/package.json +39 -0
  716. package/node_modules/@undefineds.co/solid-sdk/dist/index.d.ts +3 -0
  717. package/node_modules/@undefineds.co/solid-sdk/dist/index.js +3 -0
  718. package/node_modules/@undefineds.co/solid-sdk/dist/pod-runtime.d.ts +45 -0
  719. package/node_modules/@undefineds.co/solid-sdk/dist/pod-runtime.js +147 -0
  720. package/node_modules/@undefineds.co/solid-sdk/dist/react.d.ts +15 -0
  721. package/node_modules/@undefineds.co/solid-sdk/dist/react.js +15 -0
  722. package/node_modules/@undefineds.co/solid-sdk/dist/session.d.ts +42 -0
  723. package/node_modules/@undefineds.co/solid-sdk/dist/session.js +127 -0
  724. package/node_modules/@undefineds.co/solid-sdk/package.json +45 -0
  725. package/package.json +32 -12
  726. package/static/app/assets/index-BoYHJ6si.js +230 -0
  727. package/static/app/assets/inrupt-smoke.js +2 -2
  728. package/static/app/assets/main.css +1 -1
  729. package/static/app/assets/main.js +9 -9
  730. package/static/dashboard/assets/NetworkPage-Brt79fuQ.js +2 -0
  731. package/static/dashboard/assets/PaneListHeader-57nvMwH6.js +1 -0
  732. package/static/dashboard/assets/PodPage-CM6do1vB.js +2 -0
  733. package/static/dashboard/assets/ServicesPage-BUNxGJRz.js +1 -0
  734. package/static/dashboard/assets/card-B9Zjf_2p.js +1 -0
  735. package/static/dashboard/assets/dashboard-8C6o666W.js +305 -0
  736. package/static/dashboard/assets/dashboard-CSdewNeA.css +1 -0
  737. package/static/dashboard/assets/database-DPh9wDY9.js +1 -0
  738. package/static/dashboard/assets/external-link-VbMQvVMz.js +1 -0
  739. package/static/dashboard/assets/index-RfiFckzb.js +51 -0
  740. package/static/dashboard/assets/refresh-cw-BxVxNxNr.js +1 -0
  741. package/static/dashboard/assets/services-status-context-DKmJ7ISr.js +1 -0
  742. package/static/dashboard/dashboard.html +2 -2
  743. package/static/settings/assets/ModelsPage-D_IH7AH3.js +1 -0
  744. package/static/settings/assets/PaneListHeader-Bgaze006.js +1 -0
  745. package/static/settings/assets/PodPage-Cy1VNObw.js +2 -0
  746. package/static/settings/assets/ServicesPage-BsFaxVWC.js +1 -0
  747. package/static/settings/assets/SettingsPage-UafNWE_p.js +48 -0
  748. package/static/settings/assets/card-B_bXSIn-.js +1 -0
  749. package/static/settings/assets/services-status-context-DiX-AbrP.js +1 -0
  750. package/static/settings/assets/settings-B30oMfZq.js +305 -0
  751. package/static/settings/assets/settings-CSdewNeA.css +1 -0
  752. package/static/settings/assets/workspace-layout-Dv1Yn9Ci.js +1 -0
  753. package/static/settings/auth.html +21 -0
  754. package/static/settings/reachability.html +221 -0
  755. package/static/settings/reachability.svg +7 -0
  756. package/static/settings/reachability.webmanifest +18 -0
  757. package/static/settings/settings.html +13 -0
  758. package/static/settings/signal-pod.html +293 -0
  759. package/static/settings/vite.svg +1 -0
  760. package/dist/api/service/ai-gateway-transport.d.ts +0 -25
  761. package/dist/api/service/ai-gateway-transport.js +0 -136
  762. package/dist/api/service/ai-gateway-transport.js.map +0 -1
  763. package/dist/api/service/chat-protocol-adapters.d.ts +0 -5
  764. package/dist/api/service/chat-protocol-adapters.js +0 -146
  765. package/dist/api/service/chat-protocol-adapters.js.map +0 -1
  766. package/dist/api/service/chat-routing.d.ts +0 -8
  767. package/dist/api/service/chat-routing.js +0 -16
  768. package/dist/api/service/chat-routing.js.map +0 -1
  769. package/dist/api/service/platform-ai-config.d.ts +0 -10
  770. package/dist/api/service/platform-ai-config.js +0 -76
  771. package/dist/api/service/platform-ai-config.js.map +0 -1
  772. package/dist/document/DocumentParser.js.map +0 -1
  773. package/dist/document/JinaDocumentParser.js.map +0 -1
  774. package/static/app/assets/index-C1yksyT4.js +0 -171
  775. package/static/dashboard/assets/dashboard-BssaVKTn.css +0 -1
  776. package/static/dashboard/assets/dashboard-Ckuadl3C.js +0 -54
@@ -1 +1 @@
1
- {"version":3,"file":"models-benchmark.js","sourceRoot":"","sources":["../../../src/storage/rdf/models-benchmark.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from 'node:crypto';\nimport { DataFactory } from 'n3';\nimport { termToId } from 'n3';\nimport type { Quad, Term } from '@rdfjs/types';\nimport type { QuintPattern, QueryOptions, QuintStore, StoreStats } from '../quint/types';\nimport { isTerm } from '../quint/types';\nimport type {\n Rdf3xJoinMetrics,\n Rdf3xIndexMetrics,\n Rdf3xIndexStats,\n Rdf3xObjectOperatorPattern,\n Rdf3xObjectRangePattern,\n Rdf3xObjectTextSearchPattern,\n Rdf3xPermutationName,\n Rdf3xTermInPattern,\n Rdf3xTermNotInPattern,\n Rdf3xTriplePattern,\n RdfBindingRow,\n RdfEngineStorageStats,\n RdfIndexMetrics,\n RdfIndexStats,\n RdfQuery,\n RdfQueryMetrics,\n RdfQuadJoinCountOptions,\n RdfQuadJoinGroupAggregateHaving,\n RdfQuadJoinGroupAggregateOptions,\n RdfQuadJoinOptions,\n RdfQuadJoinPattern,\n RdfQueryAggregate,\n RdfQueryFilter,\n RdfQueryPattern,\n RdfQueryPatternKey,\n RdfShadowDiff,\n} from './types';\nimport { canonicalQuadKey, diffQuads } from './RdfShadowComparator';\nimport type { SolidRdfEngine } from './SolidRdfEngine';\nimport { isRdfNumericDatatype, rdfNumericValue } from './RdfTermSemantics';\n\nconst { namedNode, literal } = DataFactory;\n\nexport type RdfBenchmarkScale = 'small' | 'medium' | 'large';\n\nexport const RDF_MODELS_SYNTHETIC_MESSAGE_QUADS = 4;\n\nconst RDF_MODELS_SCALE_TARGET_QUADS: Record<RdfBenchmarkScale, number> = {\n small: 48,\n medium: 10_000,\n large: 1_000_000,\n};\n\nconst RDF_MODELS_SYNTHETIC_POD_COUNTS: Record<RdfBenchmarkScale, number> = {\n small: 1,\n medium: 1,\n large: 4,\n};\n\nexport interface RdfModelBenchmarkCase {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: {\n pattern: QuintPattern;\n options?: QueryOptions;\n };\n expectedPlan: string[];\n}\n\nexport interface RdfModelQueryBenchmarkCase {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n minReturnedRows?: number;\n query: RdfQuery;\n expectedPlan: string[];\n}\n\nexport interface RdfModelBenchmarkRunOptions {\n cases?: readonly RdfModelBenchmarkCase[];\n queryCases?: readonly RdfModelQueryBenchmarkCase[];\n scale?: RdfBenchmarkScale;\n iterations?: number;\n}\n\nexport interface RdfModelBenchmarkResult {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: {\n pattern: JsonPattern;\n options?: QueryOptions;\n };\n expectedPlan: string[];\n planMatched: boolean;\n missingPlan: string[];\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n returnedRows: number;\n checksum: string;\n orderedChecksum: string;\n durationsMs: number[];\n p50DurationMs: number;\n p95DurationMs: number;\n metrics: RdfIndexMetrics;\n indexStats: RdfIndexStats;\n}\n\nexport interface RdfModelQueryBenchmarkResult {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: JsonPattern;\n expectedPlan: string[];\n planMatched: boolean;\n missingPlan: string[];\n physicalPlan: string[];\n scannedRows: number;\n indexChoices: string[];\n fallbackReason: string | null;\n returnedRows: number;\n checksum: string;\n orderedChecksum: string;\n durationsMs: number[];\n p50DurationMs: number;\n p95DurationMs: number;\n metrics: RdfQueryMetrics;\n indexStats: RdfIndexStats;\n}\n\nexport interface RdfModelBenchmarkReport {\n engine: 'solid-rdf';\n scale: RdfBenchmarkScale;\n iterations: number;\n generatedAt: string;\n planMatched: boolean;\n failedPlanCases: string[];\n storage: RdfEngineStorageStats;\n cases: RdfModelBenchmarkResult[];\n queryCases: RdfModelQueryBenchmarkResult[];\n}\n\nexport interface RdfModelShadowBenchmarkRunOptions extends RdfModelBenchmarkRunOptions {}\n\nexport interface RdfModelShadowBenchmarkSide {\n returnedRows: number;\n checksum: string;\n orderedChecksum: string;\n durationsMs: number[];\n p50DurationMs: number;\n p95DurationMs: number;\n storeStats?: StoreStats;\n}\n\nexport interface RdfModelShadowPerformanceComparison {\n p95DeltaMs: number;\n p95Ratio: number;\n matched: boolean;\n}\n\nexport interface RdfModelShadowSpaceComparison {\n databaseDeltaBytes: number;\n tableDeltaBytes: number;\n indexDeltaBytes: number;\n databaseRatio: number;\n tableRatio: number;\n indexRatio: number;\n matched: boolean;\n unavailableReason?: string;\n}\n\nexport interface RdfModelShadowBenchmarkResult {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: {\n pattern: JsonPattern;\n options?: QueryOptions;\n };\n expectedPlan: string[];\n planMatched: boolean;\n missingPlan: string[];\n matched: boolean;\n orderedMatch: boolean;\n diff: RdfShadowDiff;\n compatibility: RdfModelShadowBenchmarkSide;\n solidRdf: RdfModelShadowBenchmarkSide & {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n metrics: RdfIndexMetrics;\n indexStats: RdfIndexStats;\n };\n performance: RdfModelShadowPerformanceComparison;\n space: RdfModelShadowSpaceComparison;\n}\n\nexport interface RdfModelShadowBenchmarkReport {\n engine: 'shadow';\n compatibilityEngine: 'quint-store';\n candidateEngine: 'solid-rdf';\n scale: RdfBenchmarkScale;\n iterations: number;\n generatedAt: string;\n matched: boolean;\n orderedMatched: boolean;\n planMatched: boolean;\n spaceGateEnforced: boolean;\n performanceMatched: boolean;\n spaceMatched: boolean;\n failedPlanCases: string[];\n failedPerformanceCases: string[];\n failedSpaceCases: string[];\n cases: RdfModelShadowBenchmarkResult[];\n}\n\nexport interface RdfModelRdf3xShadowBenchmarkResult {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: {\n pattern: JsonPattern;\n options?: QueryOptions;\n };\n expectedPlan: string[];\n planMatched: boolean;\n missingPlan: string[];\n supported: boolean;\n unsupportedReason?: string;\n matched: boolean;\n orderedMatch: boolean;\n diff: RdfShadowDiff;\n solidRdf: RdfModelShadowBenchmarkSide & {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n metrics: RdfIndexMetrics;\n indexStats: RdfIndexStats;\n };\n rdf3x?: RdfModelShadowBenchmarkSide & {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n metrics: Rdf3xIndexMetrics;\n indexStats: Rdf3xIndexStats;\n };\n}\n\nexport interface RdfModelRdf3xShadowJoinBenchmarkResult {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: JsonPattern;\n expectedPlan: string[];\n planMatched: boolean;\n missingPlan: string[];\n supported: boolean;\n unsupportedReason?: string;\n matched: boolean;\n orderedMatch: boolean;\n diff: RdfShadowDiff;\n solidRdf: RdfModelShadowBenchmarkSide & {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n metrics: RdfIndexMetrics;\n indexStats: RdfIndexStats;\n };\n rdf3x?: RdfModelShadowBenchmarkSide & {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n metrics: Rdf3xJoinMetrics;\n indexStats: Rdf3xIndexStats;\n };\n}\n\nexport interface RdfModelRdf3xShadowBenchmarkReport {\n engine: 'rdf3x-shadow';\n primaryEngine: 'solid-rdf';\n candidateEngine: 'solid-rdf3x';\n scale: RdfBenchmarkScale;\n iterations: number;\n generatedAt: string;\n matched: boolean;\n orderedMatched: boolean;\n planMatched: boolean;\n skippedCases: string[];\n skippedJoinCases: string[];\n failedCases: string[];\n failedJoinCases: string[];\n failedPlanCases: string[];\n rebuild: {\n scannedQuads: number;\n uniqueTriples: number;\n memberships: number;\n projectionRows: number;\n durationMs: number;\n };\n storage: RdfEngineStorageStats;\n cases: RdfModelRdf3xShadowBenchmarkResult[];\n joinCases: RdfModelRdf3xShadowJoinBenchmarkResult[];\n}\n\ntype Rdf3xJoinBenchmarkShape =\n | {\n kind: 'join';\n patterns: RdfQuadJoinPattern[];\n options?: RdfQuadJoinOptions;\n }\n | {\n kind: 'join-count' | 'join-aggregate';\n patterns: RdfQuadJoinPattern[];\n options: RdfQuadJoinCountOptions;\n }\n | {\n kind: 'group-count' | 'group-aggregate';\n patterns: RdfQuadJoinPattern[];\n options: RdfQuadJoinGroupAggregateOptions;\n };\n\ntype JsonPattern = Record<string, unknown>;\n\nconst RDF_TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';\nconst DCT_CREATED = 'http://purl.org/dc/terms/created';\nconst DCT_MODIFIED = 'http://purl.org/dc/terms/modified';\nconst DCT_TITLE = 'http://purl.org/dc/terms/title';\nconst SIOC_CONTENT = 'http://rdfs.org/sioc/ns#content';\nconst SIOC_HAS_MEMBER = 'http://rdfs.org/sioc/ns#has_member';\nconst UDFS = 'https://undefineds.co/ns#';\nconst MEETING = 'http://www.w3.org/ns/pim/meeting#';\nconst SIOC = 'http://rdfs.org/sioc/ns#';\nconst FOAF_AGENT = 'http://xmlns.com/foaf/0.1/Agent';\nconst VCARD_INDIVIDUAL = 'http://www.w3.org/2006/vcard/ns#Individual';\nconst SCHEMA_CREATIVE_WORK = 'http://schema.org/CreativeWork';\nconst PERFORMANCE_P95_MIN_ABSOLUTE_HEADROOM_MS = 25;\nconst PERFORMANCE_P95_MAX_RATIO = 8;\n\nexport const rdfModelsBenchmarkCases: readonly RdfModelBenchmarkCase[] = [\n {\n name: 'list chats',\n resource: 'chat',\n purpose: 'surface list with graph-scope and type filter',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}LongChat`),\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list tasks',\n resource: 'task',\n purpose: 'task surface list with status/type filtering',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Task`),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list threads by chat',\n resource: 'thread',\n purpose: 'relation lookup under a chat index graph',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${SIOC}Thread`),\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list threads by task',\n resource: 'thread',\n purpose: 'relation lookup under a task index graph',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${SIOC}Thread`),\n graph: namedNode('https://pod.example/alice/.data/task/default/index.ttl'),\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list messages by thread',\n resource: 'message',\n purpose: 'date-bucketed message lookup through thread inverse membership',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(SIOC_HAS_MEMBER),\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'limit'],\n },\n {\n name: 'latest message',\n resource: 'message',\n purpose: 'ORDER BY + LIMIT over message date bucket',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(DCT_CREATED),\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n },\n options: { order: ['object'], reverse: true, limit: 1 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'order', 'limit'],\n },\n {\n name: 'latest run',\n resource: 'run',\n purpose: 'ORDER BY + LIMIT over date-bucketed run documents',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(DCT_CREATED),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n },\n options: { order: ['object'], reverse: true, limit: 1 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'order', 'limit'],\n },\n {\n name: 'pending runs',\n resource: 'run',\n purpose: 'status filter for scheduler and state center',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}status`),\n object: literal('queued'),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'running runs',\n resource: 'run',\n purpose: 'status filter for active runtime execution',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}status`),\n object: literal('running'),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'runs by workspace',\n resource: 'run',\n purpose: 'workspace relation filter for runtime placement and steering',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}workspace`),\n object: namedNode('file://macbook.local/Users/alice/project/'),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'runs by numeric priority',\n resource: 'run',\n purpose: 'typed numeric literal range filter for scheduler priority queues',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}priority`),\n object: { $gt: literal('9', namedNode('http://www.w3.org/2001/XMLSchema#integer')) },\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-range-filter', 'limit'],\n },\n {\n name: 'run with steps',\n resource: 'runStep',\n purpose: 'one-to-many run-step relation lookup',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}run`),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/2026/05/' },\n },\n options: { order: ['subject'], limit: 200 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'limit'],\n },\n {\n name: 'task materialization due time',\n resource: 'schedule',\n purpose: 'schedule due-time candidate lookup',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}nextRunAt`),\n object: { $lte: literal('2026-05-18T01:30:00.000Z') },\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['object'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-range-filter', 'order', 'limit'],\n },\n {\n name: 'search message literals',\n resource: 'message',\n purpose: 'literal/text index candidate that reconnects to RDF subjects',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(SIOC_CONTENT),\n object: { $contains: 'searchable' },\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['text-index', 'rdf-subject-join'],\n },\n {\n name: 'load by exact id',\n resource: 'any',\n purpose: 'base-relative id expands to exact subject IRI',\n minScale: 'small',\n query: {\n pattern: {\n subject: namedNode('https://pod.example/alice/.data/chat/default/index.ttl#this'),\n },\n },\n expectedPlan: ['SPOG'],\n },\n {\n name: 'acl graph prefix scoped query',\n resource: 'any',\n purpose: 'scope filter must avoid unbounded full-pod scans',\n minScale: 'medium',\n query: {\n pattern: {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n predicate: namedNode(DCT_MODIFIED),\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'limit'],\n },\n {\n name: 'list providers',\n resource: 'aiProvider',\n purpose: 'AI provider settings list and provider/model relation baseline',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Provider`),\n graph: { $startsWith: 'https://pod.example/alice/settings/providers/' },\n },\n },\n expectedPlan: ['graph-scope', 'type-filter'],\n },\n {\n name: 'models by provider',\n resource: 'aiModel',\n purpose: 'AI model lookup by provider relation',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}isProvidedBy`),\n object: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n },\n },\n expectedPlan: ['POSG'],\n },\n {\n name: 'credentials by provider',\n resource: 'credential',\n purpose: 'credential lookup by provider relation',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}provider`),\n object: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n },\n },\n expectedPlan: ['POSG'],\n },\n {\n name: 'list agents',\n resource: 'agent',\n purpose: 'agent identity list under the shared models agent resource base',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(FOAF_AGENT),\n graph: { $startsWith: 'https://pod.example/alice/.data/agents/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list contacts',\n resource: 'contact',\n purpose: 'contact index list under the shared models contact resource base',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(VCARD_INDIVIDUAL),\n graph: { $startsWith: 'https://pod.example/alice/.data/contacts/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list favorites',\n resource: 'favorite',\n purpose: 'favorite list over date-bucketed favorite documents',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(SCHEMA_CREATIVE_WORK),\n graph: { $startsWith: 'https://pod.example/alice/.data/favorites/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n];\n\nexport const rdfModelsQueryBenchmarkCases: readonly RdfModelQueryBenchmarkCase[] = [\n {\n name: 'latest message by thread query',\n resource: 'message',\n purpose: 'date-bucketed message timeline keeps ORDER BY/LIMIT inside SQL self-join',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: namedNode('https://pod.example/alice/.data/chat/default/index.ttl#thread_1'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n ],\n select: ['message', 'createdAt'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'desc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'next queued run by workspace query',\n resource: 'run',\n purpose: 'run state center scheduler query keeps status/workspace/date joins in SQL before LIMIT',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('queued'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}workspace`),\n object: namedNode('file://macbook.local/Users/alice/project/'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n ],\n select: ['run', 'createdAt'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'asc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'run steps by run query',\n resource: 'runStep',\n purpose: 'one-to-many run-step lookup keeps type and run relation in SQL self-join',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/2026/05/' },\n subject: { variable: 'step' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}RunStep`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/2026/05/' },\n subject: { variable: 'step' },\n predicate: namedNode(`${UDFS}run`),\n object: namedNode('https://pod.example/alice/.data/task/default/2026/05/18/runs.ttl#run_1'),\n },\n ],\n select: ['step'],\n orderBy: [\n {\n variable: 'step',\n direction: 'asc',\n },\n ],\n limit: 50,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'task materialization active due query',\n resource: 'schedule',\n purpose: 'task scheduler materialization keeps active status and due-time filter in SQL self-join',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'schedule' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Schedule`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'schedule' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('active'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'schedule' },\n predicate: namedNode(`${UDFS}nextRunAt`),\n object: { variable: 'nextRunAt' },\n },\n ],\n filters: [\n {\n variable: 'nextRunAt',\n operator: '$lte',\n value: literal('2026-05-18T01:30:00.000Z'),\n },\n ],\n select: ['schedule', 'nextRunAt'],\n orderBy: [\n {\n variable: 'nextRunAt',\n direction: 'asc',\n },\n ],\n limit: 100,\n },\n expectedPlan: ['join-index', 'range-filter-pushdown', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'message count by thread with having',\n resource: 'message',\n purpose: 'grouped message count uses SQL GROUP BY/HAVING before pagination',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n ],\n groupBy: ['thread'],\n aggregate: {\n type: 'count',\n as: 'count',\n variable: 'message',\n },\n having: [\n {\n variable: 'count',\n operator: '$gt',\n value: literal('2', namedNode('http://www.w3.org/2001/XMLSchema#integer')),\n },\n ],\n select: ['thread', 'count'],\n orderBy: [\n {\n variable: 'count',\n direction: 'desc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['group-count-index', 'having-pushdown', 'order', 'limit'],\n },\n {\n name: 'message score by thread numeric aggregate',\n resource: 'message',\n purpose: 'grouped numeric message score aggregate stays inside SQL/RDF-3X GROUP BY',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}score`),\n object: { variable: 'score' },\n },\n ],\n filters: [\n {\n variable: 'score',\n operator: '$termType',\n value: 'numeric',\n },\n ],\n groupBy: ['thread'],\n aggregates: [\n {\n type: 'count',\n as: 'count',\n variable: 'message',\n },\n {\n type: 'sum',\n as: 'scoreTotal',\n variable: 'score',\n },\n {\n type: 'avg',\n as: 'scoreAvg',\n variable: 'score',\n },\n ],\n having: [\n {\n variable: 'scoreTotal',\n operator: '$gt',\n value: literal('4', namedNode('http://www.w3.org/2001/XMLSchema#integer')),\n },\n ],\n select: ['thread', 'count', 'scoreTotal', 'scoreAvg'],\n orderBy: [\n {\n variable: 'scoreTotal',\n direction: 'desc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['group-aggregate-index', 'having-pushdown', 'order', 'limit'],\n },\n {\n name: 'message join count distinct',\n resource: 'message',\n purpose: 'message/thread BGP aggregate count stays inside SQL self-join',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}Message`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n ],\n aggregates: [\n {\n type: 'count',\n as: 'messageCount',\n variable: 'message',\n },\n {\n type: 'count',\n as: 'threadCount',\n variable: 'thread',\n distinct: true,\n },\n ],\n },\n expectedPlan: ['join-count-index'],\n },\n];\n\nexport function rdfModelsBenchmarkCaseNames(): string[] {\n return rdfModelsBenchmarkCases.map((testCase) => testCase.name);\n}\n\nexport function rdfModelsQueryBenchmarkCaseNames(): string[] {\n return rdfModelsQueryBenchmarkCases.map((testCase) => testCase.name);\n}\n\nexport function rdfModelsBenchmarkScaleTargetQuads(scale: RdfBenchmarkScale): number {\n return RDF_MODELS_SCALE_TARGET_QUADS[scale];\n}\n\nexport function rdfModelsBenchmarkSyntheticPodCount(scale: RdfBenchmarkScale): number {\n return RDF_MODELS_SYNTHETIC_POD_COUNTS[scale];\n}\n\nexport function estimateRdfModelsSyntheticQuadCount(syntheticMessages: number): number {\n return Math.max(0, Math.floor(syntheticMessages)) * RDF_MODELS_SYNTHETIC_MESSAGE_QUADS;\n}\n\nexport function defaultSyntheticMessagesForRdfModelsScale(scale: RdfBenchmarkScale): number {\n if (scale === 'small') {\n return 12;\n }\n return Math.ceil(rdfModelsBenchmarkScaleTargetQuads(scale) / RDF_MODELS_SYNTHETIC_MESSAGE_QUADS);\n}\n\nexport function rdfModelsBenchmarkScaleSatisfied(scale: RdfBenchmarkScale, seedQuadCount: number): boolean {\n return seedQuadCount >= rdfModelsBenchmarkScaleTargetQuads(scale);\n}\n\nexport function runRdfModelsBenchmark(\n engine: SolidRdfEngine,\n options: RdfModelBenchmarkRunOptions = {},\n): RdfModelBenchmarkReport {\n const scale = options.scale ?? 'small';\n const iterations = Math.max(1, Math.floor(options.iterations ?? 1));\n const cases = (options.cases ?? rdfModelsBenchmarkCases)\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const queryCases = (options.queryCases ?? rdfModelsQueryBenchmarkCases)\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const results = cases.map((testCase) => runBenchmarkCase(engine, testCase, iterations));\n const queryResults = queryCases.map((testCase) => runQueryBenchmarkCase(engine, testCase, iterations));\n const failedPlanCases = [\n ...results.filter((result) => !result.planMatched).map((result) => result.name),\n ...queryResults.filter((result) => !result.planMatched).map((result) => result.name),\n ];\n\n return {\n engine: 'solid-rdf',\n scale,\n iterations,\n generatedAt: new Date().toISOString(),\n planMatched: failedPlanCases.length === 0,\n failedPlanCases,\n storage: engine.storageStats(),\n cases: results,\n queryCases: queryResults,\n };\n}\n\nexport async function runRdfModelsShadowBenchmark(\n engine: SolidRdfEngine,\n compatibilityStore: QuintStore,\n options: RdfModelShadowBenchmarkRunOptions = {},\n): Promise<RdfModelShadowBenchmarkReport> {\n const scale = options.scale ?? 'small';\n const iterations = Math.max(1, Math.floor(options.iterations ?? 1));\n const cases = (options.cases ?? rdfModelsBenchmarkCases)\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const results = [];\n const compatibilityStats = await compatibilityStore.stats();\n\n for (const testCase of cases) {\n results.push(await runShadowBenchmarkCase(engine, compatibilityStore, testCase, iterations, compatibilityStats));\n }\n const spaceGateEnforced = scaleRank(scale) >= scaleRank('medium');\n const failedPerformanceCases = results.filter((result) => !result.performance.matched).map((result) => result.name);\n const failedSpaceCases = spaceGateEnforced\n ? results.filter((result) => !result.space.matched).map((result) => result.name)\n : [];\n\n return {\n engine: 'shadow',\n compatibilityEngine: 'quint-store',\n candidateEngine: 'solid-rdf',\n scale,\n iterations,\n generatedAt: new Date().toISOString(),\n matched: results.every((result) => result.matched),\n orderedMatched: results.every((result) => result.orderedMatch),\n planMatched: results.every((result) => result.planMatched),\n spaceGateEnforced,\n performanceMatched: failedPerformanceCases.length === 0,\n spaceMatched: failedSpaceCases.length === 0,\n failedPlanCases: results.filter((result) => !result.planMatched).map((result) => result.name),\n failedPerformanceCases,\n failedSpaceCases,\n cases: results,\n };\n}\n\nexport function runRdfModelsRdf3xShadowBenchmark(\n engine: SolidRdfEngine,\n options: RdfModelBenchmarkRunOptions = {},\n): RdfModelRdf3xShadowBenchmarkReport {\n if (!engine.rdf3xIndex) {\n throw new Error('runRdfModelsRdf3xShadowBenchmark requires SolidRdfEngine.rdf3xIndex');\n }\n const scale = options.scale ?? 'small';\n const iterations = Math.max(1, Math.floor(options.iterations ?? 1));\n const cases = (options.cases ?? rdfModelsBenchmarkCases)\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const queryCases = (options.queryCases ?? rdfModelsQueryBenchmarkCases)\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const rebuild = engine.rdf3xIndex.rebuildFromCurrentQuads();\n const results = cases.map((testCase) => runRdf3xShadowBenchmarkCase(engine, testCase, iterations));\n const joinResults = queryCases.map((testCase) => runRdf3xShadowJoinBenchmarkCase(engine, testCase, iterations));\n const supportedResults = results.filter((result) => result.supported);\n const supportedJoinResults = joinResults.filter((result) => result.supported);\n const failedPlanCases = [\n ...supportedResults.filter((result) => !result.planMatched).map((result) => result.name),\n ...supportedJoinResults.filter((result) => !result.planMatched).map((result) => result.name),\n ];\n\n return {\n engine: 'rdf3x-shadow',\n primaryEngine: 'solid-rdf',\n candidateEngine: 'solid-rdf3x',\n scale,\n iterations,\n generatedAt: new Date().toISOString(),\n matched: supportedResults.every((result) => result.matched)\n && supportedJoinResults.every((result) => result.matched),\n orderedMatched: supportedResults.every((result) => result.orderedMatch)\n && supportedJoinResults.every((result) => result.orderedMatch),\n planMatched: failedPlanCases.length === 0,\n skippedCases: results.filter((result) => !result.supported).map((result) => result.name),\n skippedJoinCases: joinResults.filter((result) => !result.supported).map((result) => result.name),\n failedCases: supportedResults.filter((result) => !result.matched || !result.orderedMatch).map((result) => result.name),\n failedJoinCases: supportedJoinResults\n .filter((result) => !result.matched || !result.orderedMatch)\n .map((result) => result.name),\n failedPlanCases,\n rebuild,\n storage: engine.storageStats(),\n cases: results,\n joinCases: joinResults,\n };\n}\n\nfunction runBenchmarkCase(\n engine: SolidRdfEngine,\n testCase: RdfModelBenchmarkCase,\n iterations: number,\n): RdfModelBenchmarkResult {\n const durationsMs: number[] = [];\n let metrics: RdfIndexMetrics | undefined;\n let keys: string[] = [];\n\n for (let i = 0; i < iterations; i += 1) {\n const start = Date.now();\n const result = engine.scan(testCase.query);\n durationsMs.push(Math.max(0, Date.now() - start));\n metrics = result.metrics;\n keys = result.quads.map(canonicalQuadKey);\n }\n\n const finalMetrics = metrics ?? {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n const missingPlan = missingExpectedPlan(testCase, finalMetrics);\n const execution = benchmarkExecution(finalMetrics);\n\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: {\n pattern: serializePattern(testCase.query.pattern),\n ...(testCase.query.options ? { options: testCase.query.options } : {}),\n },\n expectedPlan: [...testCase.expectedPlan],\n planMatched: missingPlan.length === 0,\n missingPlan,\n ...execution,\n returnedRows: keys.length,\n checksum: checksum(keys, false),\n orderedChecksum: checksum(keys, true),\n durationsMs,\n p50DurationMs: percentile(durationsMs, 0.5),\n p95DurationMs: percentile(durationsMs, 0.95),\n metrics: finalMetrics,\n indexStats: engine.index.stats(),\n };\n}\n\nfunction runQueryBenchmarkCase(\n engine: SolidRdfEngine,\n testCase: RdfModelQueryBenchmarkCase,\n iterations: number,\n): RdfModelQueryBenchmarkResult {\n const durationsMs: number[] = [];\n let metrics: RdfQueryMetrics | undefined;\n let keys: string[] = [];\n\n for (let i = 0; i < iterations; i += 1) {\n const start = Date.now();\n const result = engine.query(testCase.query);\n durationsMs.push(Math.max(0, Date.now() - start));\n metrics = result.metrics;\n keys = result.bindings.map(bindingKey);\n }\n\n const finalMetrics = metrics ?? {\n engine: 'solid-rdf',\n plan: [],\n scannedRows: 0,\n joinedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n indexChoices: [],\n filtersApplied: 0,\n filtersPushedDown: 0,\n };\n const missingPlan = missingExpectedQueryPlan(testCase, finalMetrics, keys.length);\n\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: serializeQueryPlan(testCase.query),\n expectedPlan: [...testCase.expectedPlan],\n planMatched: missingPlan.length === 0,\n missingPlan,\n physicalPlan: finalMetrics.plan,\n scannedRows: finalMetrics.scannedRows,\n indexChoices: [...finalMetrics.indexChoices],\n fallbackReason: null,\n returnedRows: keys.length,\n checksum: checksum(keys, false),\n orderedChecksum: checksum(keys, true),\n durationsMs,\n p50DurationMs: percentile(durationsMs, 0.5),\n p95DurationMs: percentile(durationsMs, 0.95),\n metrics: finalMetrics,\n indexStats: engine.index.stats(),\n };\n}\n\nfunction runRdf3xShadowBenchmarkCase(\n engine: SolidRdfEngine,\n testCase: RdfModelBenchmarkCase,\n iterations: number,\n): RdfModelRdf3xShadowBenchmarkResult {\n const baseResult = baseRdf3xShadowBenchmarkResult(testCase);\n const unsupportedReason = unsupportedRdf3xPatternReason(testCase.query.pattern);\n if (unsupportedReason) {\n return {\n ...baseResult,\n supported: false,\n unsupportedReason,\n planMatched: false,\n missingPlan: [unsupportedReason],\n matched: false,\n orderedMatch: false,\n diff: {\n missingFromPrimary: [],\n extraInPrimary: [],\n },\n solidRdf: emptySolidRdfBenchmarkSide(engine),\n };\n }\n\n const solidRdfDurationsMs: number[] = [];\n const rdf3xDurationsMs: number[] = [];\n let solidRdfQuads: Quad[] = [];\n let rdf3xQuads: Quad[] = [];\n let solidRdfMetrics: RdfIndexMetrics | undefined;\n let rdf3xMetrics: Rdf3xIndexMetrics | undefined;\n\n for (let i = 0; i < iterations; i += 1) {\n let start = Date.now();\n const solidRdfResult = engine.scan(testCase.query);\n solidRdfDurationsMs.push(Math.max(0, Date.now() - start));\n solidRdfQuads = solidRdfResult.quads;\n solidRdfMetrics = solidRdfResult.metrics;\n\n start = Date.now();\n const rdf3xResult = engine.rdf3xIndex!.scan(rdf3xPatternFor(testCase.query.pattern), testCase.query.options);\n rdf3xDurationsMs.push(Math.max(0, Date.now() - start));\n rdf3xQuads = rdf3xResult.quads;\n rdf3xMetrics = rdf3xResult.metrics;\n }\n\n const solidRdfKeys = solidRdfQuads.map(canonicalQuadKey);\n const rdf3xKeys = rdf3xQuads.map(canonicalQuadKey);\n const diff = diffQuads(solidRdfQuads, rdf3xQuads);\n const orderedMatch = isSemanticallyOrdered(testCase.query.options)\n ? rdf3xKeys.join('\\n') === solidRdfKeys.join('\\n')\n : true;\n const finalSolidRdfMetrics = solidRdfMetrics ?? {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n const finalRdf3xMetrics = rdf3xMetrics ?? {\n engine: 'solid-rdf3x',\n indexChoice: 'none',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n } satisfies Rdf3xIndexMetrics;\n const missingPlan = missingExpectedRdf3xPlan(testCase, finalRdf3xMetrics);\n const planMatched = missingPlan.length === 0;\n\n return {\n ...baseResult,\n supported: true,\n planMatched,\n missingPlan,\n matched: planMatched && diff.missingFromPrimary.length === 0 && diff.extraInPrimary.length === 0,\n orderedMatch,\n diff,\n solidRdf: {\n ...benchmarkSide(solidRdfKeys, solidRdfDurationsMs),\n ...benchmarkExecution(finalSolidRdfMetrics),\n metrics: finalSolidRdfMetrics,\n indexStats: engine.index.stats(),\n },\n rdf3x: {\n ...benchmarkSide(rdf3xKeys, rdf3xDurationsMs),\n ...rdf3xBenchmarkExecution(finalRdf3xMetrics),\n metrics: finalRdf3xMetrics,\n indexStats: engine.rdf3xIndex!.stats(),\n },\n };\n}\n\nfunction runRdf3xShadowJoinBenchmarkCase(\n engine: SolidRdfEngine,\n testCase: RdfModelQueryBenchmarkCase,\n iterations: number,\n): RdfModelRdf3xShadowJoinBenchmarkResult {\n const unsupportedReason = unsupportedRdf3xJoinQueryReason(testCase.query);\n if (unsupportedReason) {\n return {\n ...baseRdf3xShadowJoinBenchmarkResult(testCase),\n supported: false,\n unsupportedReason,\n planMatched: false,\n missingPlan: [unsupportedReason],\n matched: false,\n orderedMatch: false,\n diff: {\n missingFromPrimary: [],\n extraInPrimary: [],\n },\n solidRdf: emptySolidRdfBenchmarkSide(engine),\n };\n }\n\n const joinShape = rdf3xJoinShapeFor(testCase.query);\n const solidRdfDurationsMs: number[] = [];\n const rdf3xDurationsMs: number[] = [];\n let solidRdfBindings: RdfBindingRow[] = [];\n let rdf3xBindings: RdfBindingRow[] = [];\n let solidRdfMetrics: RdfIndexMetrics | undefined;\n let rdf3xMetrics: Rdf3xJoinMetrics | undefined;\n\n for (let i = 0; i < iterations; i += 1) {\n let start = Date.now();\n const solidRdfResult = runSolidRdfJoinShape(engine, joinShape);\n solidRdfDurationsMs.push(Math.max(0, Date.now() - start));\n solidRdfBindings = solidRdfResult.bindings;\n solidRdfMetrics = solidRdfResult.metrics;\n\n start = Date.now();\n const rdf3xResult = runRdf3xJoinShape(engine, joinShape);\n rdf3xDurationsMs.push(Math.max(0, Date.now() - start));\n rdf3xBindings = rdf3xResult.bindings;\n rdf3xMetrics = rdf3xResult.metrics;\n }\n\n const solidRdfKeys = solidRdfBindings.map(bindingKey);\n const rdf3xKeys = rdf3xBindings.map(bindingKey);\n const diff = diffBindingKeys(solidRdfKeys, rdf3xKeys);\n const orderedMatch = isSemanticallyOrderedRdf3xJoinShape(joinShape)\n ? rdf3xKeys.join('\\n') === solidRdfKeys.join('\\n')\n : true;\n const finalSolidRdfMetrics = solidRdfMetrics ?? {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n const finalRdf3xMetrics = rdf3xMetrics ?? {\n engine: 'solid-rdf3x',\n indexChoice: 'none',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n } satisfies Rdf3xJoinMetrics;\n const missingPlan = [\n ...missingExpectedRdf3xJoinPlan(testCase, finalRdf3xMetrics, rdf3xKeys.length),\n ...unresolvedPlanFailures(finalSolidRdfMetrics.queryPlan ?? []).map((label) => `solid-rdf:${label}`),\n ];\n const planMatched = missingPlan.length === 0;\n\n return {\n ...baseRdf3xShadowJoinBenchmarkResult(testCase),\n supported: true,\n planMatched,\n missingPlan,\n matched: planMatched\n && diff.missingFromPrimary.length === 0\n && diff.extraInPrimary.length === 0,\n orderedMatch,\n diff,\n solidRdf: {\n ...benchmarkSide(solidRdfKeys, solidRdfDurationsMs),\n ...benchmarkExecution(finalSolidRdfMetrics),\n metrics: finalSolidRdfMetrics,\n indexStats: engine.index.stats(),\n },\n rdf3x: {\n ...benchmarkSide(rdf3xKeys, rdf3xDurationsMs),\n ...rdf3xJoinBenchmarkExecution(finalRdf3xMetrics),\n metrics: finalRdf3xMetrics,\n indexStats: engine.rdf3xIndex!.stats(),\n },\n };\n}\n\nfunction runSolidRdfJoinShape(\n engine: SolidRdfEngine,\n shape: Rdf3xJoinBenchmarkShape,\n): { bindings: RdfBindingRow[]; metrics: RdfIndexMetrics } {\n switch (shape.kind) {\n case 'join':\n return engine.index.joinPatterns(shape.patterns, shape.options);\n case 'join-count':\n return engine.index.countJoinPatterns(shape.patterns, shape.options);\n case 'join-aggregate':\n return engine.index.aggregateJoinPatterns(shape.patterns, shape.options);\n case 'group-count':\n return engine.index.groupCountJoinPatterns(shape.patterns, shape.options);\n case 'group-aggregate':\n return engine.index.groupAggregateJoinPatterns(shape.patterns, shape.options);\n default: {\n const exhaustive: never = shape;\n throw new Error(`Unsupported RDF-3X benchmark shape: ${JSON.stringify(exhaustive)}`);\n }\n }\n}\n\nfunction runRdf3xJoinShape(\n engine: SolidRdfEngine,\n shape: Rdf3xJoinBenchmarkShape,\n): { bindings: RdfBindingRow[]; metrics: Rdf3xJoinMetrics } {\n switch (shape.kind) {\n case 'join':\n return engine.rdf3xIndex!.joinPatterns(shape.patterns, shape.options);\n case 'join-count':\n return engine.rdf3xIndex!.countJoinPatterns(shape.patterns, shape.options);\n case 'join-aggregate':\n return engine.rdf3xIndex!.aggregateJoinPatterns(shape.patterns, shape.options);\n case 'group-count':\n return engine.rdf3xIndex!.groupCountJoinPatterns(shape.patterns, shape.options);\n case 'group-aggregate':\n return engine.rdf3xIndex!.groupAggregateJoinPatterns(shape.patterns, shape.options);\n default: {\n const exhaustive: never = shape;\n throw new Error(`Unsupported RDF-3X benchmark shape: ${JSON.stringify(exhaustive)}`);\n }\n }\n}\n\nfunction baseRdf3xShadowBenchmarkResult(testCase: RdfModelBenchmarkCase): Pick<\n RdfModelRdf3xShadowBenchmarkResult,\n 'name' | 'resource' | 'purpose' | 'minScale' | 'query' | 'expectedPlan'\n> {\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: {\n pattern: serializePattern(testCase.query.pattern),\n ...(testCase.query.options ? { options: testCase.query.options } : {}),\n },\n expectedPlan: [...testCase.expectedPlan],\n };\n}\n\nfunction emptySolidRdfBenchmarkSide(engine: SolidRdfEngine): RdfModelRdf3xShadowBenchmarkResult['solidRdf'] {\n const metrics: RdfIndexMetrics = {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n return {\n ...benchmarkSide([], []),\n ...benchmarkExecution(metrics),\n metrics,\n indexStats: engine.index.stats(),\n };\n}\n\nasync function runShadowBenchmarkCase(\n engine: SolidRdfEngine,\n compatibilityStore: QuintStore,\n testCase: RdfModelBenchmarkCase,\n iterations: number,\n compatibilityStats: StoreStats,\n): Promise<RdfModelShadowBenchmarkResult> {\n const compatibilityDurationsMs: number[] = [];\n const solidRdfDurationsMs: number[] = [];\n let compatibilityQuads: Quad[] = [];\n let solidRdfQuads: Quad[] = [];\n let metrics: RdfIndexMetrics | undefined;\n\n for (let i = 0; i < iterations; i += 1) {\n let start = Date.now();\n compatibilityQuads = await compatibilityStore.get(testCase.query.pattern, testCase.query.options);\n compatibilityDurationsMs.push(Math.max(0, Date.now() - start));\n\n start = Date.now();\n const solidRdfResult = engine.scan(testCase.query);\n solidRdfDurationsMs.push(Math.max(0, Date.now() - start));\n solidRdfQuads = solidRdfResult.quads;\n metrics = solidRdfResult.metrics;\n }\n\n const compatibilityKeys = compatibilityQuads.map(canonicalQuadKey);\n const solidRdfKeys = solidRdfQuads.map(canonicalQuadKey);\n const diff = diffQuads(solidRdfQuads, compatibilityQuads);\n const orderedMatch = isSemanticallyOrdered(testCase.query.options)\n ? solidRdfKeys.join('\\n') === compatibilityKeys.join('\\n')\n : true;\n const finalMetrics = metrics ?? {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n const missingPlan = missingExpectedPlan(testCase, finalMetrics);\n const execution = benchmarkExecution(finalMetrics);\n const compatibilitySide = {\n ...benchmarkSide(compatibilityKeys, compatibilityDurationsMs),\n storeStats: compatibilityStats,\n };\n const solidRdfSide = {\n ...benchmarkSide(solidRdfKeys, solidRdfDurationsMs),\n ...execution,\n metrics: finalMetrics,\n indexStats: engine.index.stats(),\n };\n\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: {\n pattern: serializePattern(testCase.query.pattern),\n ...(testCase.query.options ? { options: testCase.query.options } : {}),\n },\n expectedPlan: [...testCase.expectedPlan],\n planMatched: missingPlan.length === 0,\n missingPlan,\n matched: diff.missingFromPrimary.length === 0 && diff.extraInPrimary.length === 0,\n orderedMatch,\n diff,\n compatibility: compatibilitySide,\n solidRdf: solidRdfSide,\n performance: comparePerformance(compatibilitySide, solidRdfSide),\n space: compareSpace(compatibilityStats, solidRdfSide.indexStats),\n };\n}\n\nfunction benchmarkExecution(metrics: RdfIndexMetrics): {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n} {\n return {\n physicalPlan: metrics.queryPlan ?? [],\n scannedRows: metrics.matchedRows,\n indexChoice: metrics.indexChoice,\n joinOrder: [metrics.indexChoice],\n fallbackReason: null,\n };\n}\n\nfunction rdf3xBenchmarkExecution(metrics: Rdf3xIndexMetrics): {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n} {\n return {\n physicalPlan: metrics.queryPlan ?? [],\n scannedRows: metrics.matchedRows,\n indexChoice: metrics.indexChoice,\n joinOrder: [metrics.indexChoice],\n fallbackReason: null,\n };\n}\n\nfunction rdf3xJoinBenchmarkExecution(metrics: Rdf3xJoinMetrics): {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n} {\n return {\n physicalPlan: metrics.queryPlan ?? [],\n scannedRows: metrics.matchedRows,\n indexChoice: metrics.indexChoice,\n joinOrder: [metrics.indexChoice],\n fallbackReason: null,\n };\n}\n\nfunction baseRdf3xShadowJoinBenchmarkResult(testCase: RdfModelQueryBenchmarkCase): Pick<\n RdfModelRdf3xShadowJoinBenchmarkResult,\n 'name' | 'resource' | 'purpose' | 'minScale' | 'query' | 'expectedPlan'\n> {\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: serializeQueryPlan(testCase.query),\n expectedPlan: [...testCase.expectedPlan],\n };\n}\n\nfunction unsupportedRdf3xJoinQueryReason(query: RdfQuery): string | undefined {\n if (query.patterns.length === 0) {\n return 'RDF-3X join shadow requires at least one required BGP pattern';\n }\n if (query.values?.length) {\n return 'RDF-3X join shadow does not support VALUES yet';\n }\n if (query.textSearch?.length || query.vectorSearch?.length) {\n return 'RDF-3X join shadow does not support search sources yet';\n }\n if (query.unions?.length || query.minus?.length || query.exists?.length || query.optional?.length) {\n return 'RDF-3X join shadow only supports required BGP queries';\n }\n if (query.binds?.length) {\n return 'RDF-3X join shadow does not support BIND yet';\n }\n\n const aggregates = queryAggregates(query);\n const visibleVariables = new Set(query.patterns.flatMap((pattern) => variablesInLocalPattern(pattern)));\n const compiled = rdf3xJoinPatternsFor(query, aggregates);\n if (compiled.unsupportedReason) {\n return compiled.unsupportedReason;\n }\n if ((query.filters?.length ?? 0) > 0 && compiled.pushedFilterIndexes.size < (query.filters?.length ?? 0)) {\n return 'RDF-3X join shadow only supports filters that can be fully pushed into RDF-3X patterns';\n }\n\n if (aggregates.length > 0) {\n const aggregateReason = unsupportedRdf3xAggregateReason(query, aggregates, visibleVariables);\n if (aggregateReason) {\n return aggregateReason;\n }\n }\n if (aggregates.length === 0 && (query.groupBy?.length ?? 0) > 0) {\n return 'RDF-3X join shadow does not support GROUP BY without aggregates';\n }\n if (aggregates.length === 0 && (query.having?.length ?? 0) > 0) {\n return 'RDF-3X join shadow does not support HAVING without aggregates';\n }\n return undefined;\n}\n\nfunction rdf3xJoinShapeFor(query: RdfQuery): Rdf3xJoinBenchmarkShape {\n const aggregates = queryAggregates(query);\n const compiled = rdf3xJoinPatternsFor(query, aggregates);\n if (!compiled.patterns) {\n throw new Error(compiled.unsupportedReason ?? 'RDF-3X join shadow cannot compile query shape');\n }\n if ((query.groupBy?.length ?? 0) > 0) {\n const aggregateAliases = new Set(aggregates.map((aggregate) => aggregate.as));\n const having = rdf3xGroupAggregateHaving(query.having ?? [], aggregateAliases);\n return {\n kind: aggregates.every((aggregate) => aggregate.type === 'count') ? 'group-count' : 'group-aggregate',\n patterns: compiled.patterns,\n options: {\n groupBy: query.groupBy ?? [],\n aggregates,\n ...(having.length > 0 ? { having } : {}),\n ...(query.orderBy ? { orderBy: query.orderBy } : {}),\n ...(query.limit !== undefined ? { limit: query.limit } : {}),\n ...(query.offset !== undefined ? { offset: query.offset } : {}),\n },\n };\n }\n if (aggregates.length > 0) {\n return {\n kind: aggregates.every((aggregate) => aggregate.type === 'count') ? 'join-count' : 'join-aggregate',\n patterns: compiled.patterns,\n options: { aggregates },\n };\n }\n return {\n kind: 'join',\n patterns: compiled.patterns,\n options: {\n ...(query.select ? { project: query.select } : {}),\n ...(query.distinct ? { distinct: true } : {}),\n ...(query.orderBy ? { orderBy: query.orderBy } : {}),\n ...(query.limit !== undefined ? { limit: query.limit } : {}),\n ...(query.offset !== undefined ? { offset: query.offset } : {}),\n },\n };\n}\n\nfunction unsupportedRdf3xAggregateReason(\n query: RdfQuery,\n aggregates: RdfQueryAggregate[],\n visibleVariables: Set<string>,\n): string | undefined {\n if ((query.groupBy?.length ?? 0) > 0) {\n if ((query.groupBy ?? []).some((variableName) => !visibleVariables.has(variableName))) {\n return 'RDF-3X join shadow cannot group by variables outside required BGP';\n }\n const aggregateAliases = new Set(aggregates.map((aggregate) => aggregate.as));\n if ((query.orderBy ?? []).some((entry) => !(query.groupBy ?? []).includes(entry.variable) && !aggregateAliases.has(entry.variable))) {\n return 'RDF-3X join shadow cannot order grouped aggregates by unbound variables';\n }\n if (!canCompileRdf3xGroupAggregateHaving(query.having ?? [], aggregateAliases)) {\n return 'RDF-3X join shadow cannot push this grouped HAVING shape';\n }\n } else if ((query.having?.length ?? 0) > 0) {\n return 'RDF-3X join shadow does not support non-grouped HAVING yet';\n } else if (query.orderBy?.length || query.limit !== undefined || query.offset !== undefined || query.distinct) {\n return 'RDF-3X join shadow does not support ORDER/LIMIT/DISTINCT around non-grouped aggregates yet';\n }\n\n for (const aggregate of aggregates) {\n if (aggregate.variable && !visibleVariables.has(aggregate.variable)) {\n return 'RDF-3X join shadow aggregate variable must be bound by required BGP';\n }\n if (aggregate.type !== 'count' && (!aggregate.variable || aggregate.distinct)) {\n return 'RDF-3X join shadow only supports non-distinct numeric aggregates over bound variables';\n }\n }\n return undefined;\n}\n\nfunction rdf3xJoinPatternsFor(query: RdfQuery, aggregates: RdfQueryAggregate[]): {\n patterns?: RdfQuadJoinPattern[];\n pushedFilterIndexes: Set<number>;\n unsupportedReason?: string;\n} {\n const patterns: RdfQuadJoinPattern[] = [];\n const pushedFilterIndexes = new Set<number>();\n const numericAggregateVariables = new Set(aggregates\n .filter((aggregate) => aggregate.type !== 'count')\n .map((aggregate) => aggregate.variable)\n .filter((variableName): variableName is string => Boolean(variableName)));\n for (const pattern of query.patterns) {\n const compiled = rdf3xJoinPatternFor(pattern, query.filters ?? [], numericAggregateVariables);\n const unsupportedPattern = unsupportedRdf3xPatternReason(compiled.pattern);\n if (unsupportedPattern) {\n return {\n pushedFilterIndexes,\n unsupportedReason: unsupportedPattern,\n };\n }\n compiled.pushedFilterIndexes.forEach((index) => pushedFilterIndexes.add(index));\n patterns.push({\n pattern: compiled.pattern,\n variables: compiled.variables,\n });\n }\n return { patterns, pushedFilterIndexes };\n}\n\nfunction rdf3xJoinPatternFor(\n pattern: RdfQueryPattern,\n filters: RdfQueryFilter[],\n numericAggregateVariables: Set<string>,\n): RdfQuadJoinPattern & { pushedFilterIndexes: number[] } {\n const compiledPattern: RdfQuadJoinPattern['pattern'] = {};\n const variables: RdfQuadJoinPattern['variables'] = {};\n const pushedFilterIndexes = new Set<number>();\n for (const key of ['graph', 'subject', 'predicate', 'object'] as RdfQueryPatternKey[]) {\n const value = pattern[key];\n if (!value) {\n continue;\n }\n if (isQueryVariable(value)) {\n variables[key] = value.variable;\n const pushdown = rdf3xBenchmarkPushdownFilter(value.variable, filters, numericAggregateVariables);\n if (pushdown) {\n if (pushdown.pattern !== undefined) {\n compiledPattern[key] = pushdown.pattern;\n }\n pushdown.filterIndexes.forEach((index) => pushedFilterIndexes.add(index));\n }\n } else {\n compiledPattern[key] = value;\n }\n }\n return {\n pattern: compiledPattern,\n variables,\n pushedFilterIndexes: [...pushedFilterIndexes],\n };\n}\n\nfunction rdf3xBenchmarkPushdownFilter(\n variableName: string,\n filters: RdfQueryFilter[],\n numericAggregateVariables: Set<string>,\n): { pattern?: RdfQuadJoinPattern['pattern'][RdfQueryPatternKey]; filterIndexes: number[] } | undefined {\n const operators: Record<string, unknown> = {};\n const filterIndexes: number[] = [];\n for (let index = 0; index < filters.length; index += 1) {\n const filter = filters[index];\n if (filter.variable !== variableName || filter.variable2 || filter.operand) {\n continue;\n }\n switch (filter.operator) {\n case '$eq':\n case '$sameTerm':\n if (filter.value === undefined || !isTerm(filter.value as any)) {\n return undefined;\n }\n return { pattern: filter.value as Term, filterIndexes: [index] };\n case '$in':\n if (!filter.values?.length || filter.values.some((value) => !isTerm(value as any))) {\n return undefined;\n }\n return { pattern: { $in: filter.values as Term[] }, filterIndexes: [index] };\n case '$notIn':\n if (!filter.values?.length || filter.values.some((value) => !isTerm(value as any))) {\n return undefined;\n }\n return { pattern: { $notIn: filter.values as Term[] }, filterIndexes: [index] };\n case '$gt':\n case '$gte':\n case '$lt':\n case '$lte':\n if (filter.value === undefined) {\n return undefined;\n }\n operators[filter.operator] = filter.value;\n filterIndexes.push(index);\n break;\n case '$termType':\n if (filter.value !== 'numeric' || !numericAggregateVariables.has(variableName)) {\n return undefined;\n }\n filterIndexes.push(index);\n break;\n default:\n return undefined;\n }\n }\n if (Object.keys(operators).length > 0) {\n return { pattern: operators as RdfQuadJoinPattern['pattern'][RdfQueryPatternKey], filterIndexes };\n }\n return filterIndexes.length > 0\n ? { filterIndexes }\n : undefined;\n}\n\nfunction queryAggregates(query: RdfQuery): RdfQueryAggregate[] {\n return query.aggregates && query.aggregates.length > 0\n ? query.aggregates\n : query.aggregate\n ? [query.aggregate]\n : [];\n}\n\nfunction variablesInLocalPattern(pattern: RdfQueryPattern): string[] {\n return ['graph', 'subject', 'predicate', 'object']\n .map((key) => pattern[key as RdfQueryPatternKey])\n .filter(isQueryVariable)\n .map((value) => value.variable);\n}\n\nfunction canCompileRdf3xGroupAggregateHaving(\n having: RdfQueryFilter[],\n aggregateAliases: Set<string>,\n): boolean {\n return having.every((filter) => (\n aggregateAliases.has(filter.variable)\n && !filter.operand\n && !filter.variable2\n && filter.value !== undefined\n && isGroupAggregateHavingOperator(filter.operator)\n && numericRangeValue(filter.value) !== undefined\n ));\n}\n\nfunction rdf3xGroupAggregateHaving(\n having: RdfQueryFilter[],\n aggregateAliases: Set<string>,\n): RdfQuadJoinGroupAggregateHaving[] {\n return having.map((filter) => {\n const value = filter.value === undefined ? undefined : numericRangeValue(filter.value);\n if (\n !aggregateAliases.has(filter.variable)\n || !isGroupAggregateHavingOperator(filter.operator)\n || value === undefined\n ) {\n throw new Error('RDF-3X join shadow cannot compile grouped HAVING');\n }\n return {\n aggregate: filter.variable,\n operator: filter.operator,\n value,\n };\n });\n}\n\nfunction isGroupAggregateHavingOperator(\n operator: RdfQueryFilter['operator'],\n): operator is RdfQuadJoinGroupAggregateHaving['operator'] {\n return operator === '$eq'\n || operator === '$ne'\n || operator === '$gt'\n || operator === '$gte'\n || operator === '$lt'\n || operator === '$lte';\n}\n\nfunction isQueryVariable(value: unknown): value is { variable: string } {\n return value !== null\n && typeof value === 'object'\n && !('termType' in value)\n && 'variable' in value\n && typeof (value as { variable?: unknown }).variable === 'string';\n}\n\nfunction unsupportedRdf3xPatternReason(pattern: QuintPattern): string | undefined {\n for (const key of ['graph', 'subject', 'predicate', 'object'] as const) {\n const value = pattern[key];\n if (!value || isTerm(value as any)) {\n continue;\n }\n if (key === 'graph' && isGraphPrefixPattern(value)) {\n continue;\n }\n if (isRdf3xTermInPattern(value)) {\n continue;\n }\n if (isRdf3xTermNotInPattern(value)) {\n continue;\n }\n if (key === 'object' && isSupportedRdf3xObjectOperatorPattern(value)) {\n continue;\n }\n return `unsupported ${key} pattern for RDF-3X shadow`;\n }\n return undefined;\n}\n\nfunction rdf3xPatternFor(pattern: QuintPattern): Rdf3xTriplePattern {\n const result: Rdf3xTriplePattern = {};\n for (const key of ['graph', 'subject', 'predicate', 'object'] as const) {\n const value = pattern[key];\n if (!value) {\n continue;\n }\n if (key === 'graph' && isGraphPrefixPattern(value)) {\n result.graph = { $startsWith: value.$startsWith };\n continue;\n }\n if (isRdf3xTermInPattern(value)) {\n result[key] = value;\n continue;\n }\n if (isRdf3xTermNotInPattern(value)) {\n result[key] = value;\n continue;\n }\n if (key === 'object' && isSupportedRdf3xObjectOperatorPattern(value)) {\n result.object = value;\n continue;\n }\n if (!isTerm(value as any)) {\n throw new Error(`RDF-3X shadow benchmark only supports exact ${key} terms or graph prefixes`);\n }\n result[key] = value as import('@rdfjs/types').Term;\n }\n return result;\n}\n\nfunction isRdf3xTermInPattern(value: unknown): value is Rdf3xTermInPattern {\n return value !== null\n && typeof value === 'object'\n && !('termType' in value)\n && Object.keys(value).length === 1\n && Array.isArray((value as { $in?: unknown }).$in)\n && ((value as { $in: unknown[] }).$in).length > 0\n && ((value as { $in: unknown[] }).$in).every((entry) => isTerm(entry as any));\n}\n\nfunction isRdf3xTermNotInPattern(value: unknown): value is Rdf3xTermNotInPattern {\n return value !== null\n && typeof value === 'object'\n && !('termType' in value)\n && Object.keys(value).length === 1\n && Array.isArray((value as { $notIn?: unknown }).$notIn)\n && ((value as { $notIn: unknown[] }).$notIn).length > 0\n && ((value as { $notIn: unknown[] }).$notIn).every((entry) => isTerm(entry as any));\n}\n\nfunction isGraphPrefixPattern(value: unknown): value is { $startsWith: string } {\n return value !== null\n && typeof value === 'object'\n && '$startsWith' in value\n && typeof (value as { $startsWith?: unknown }).$startsWith === 'string';\n}\n\nfunction isSupportedRdf3xObjectOperatorPattern(value: unknown): value is Rdf3xObjectOperatorPattern {\n if (value === null || typeof value !== 'object' || 'termType' in value) {\n return false;\n }\n let hasOperator = false;\n for (const operator of ['$gt', '$gte', '$lt', '$lte'] as const) {\n const rangeValue = (value as Rdf3xObjectRangePattern)[operator];\n if (rangeValue === undefined) {\n continue;\n }\n hasOperator = true;\n if (!isSupportedRdf3xObjectRangeValue(rangeValue)) {\n return false;\n }\n }\n for (const operator of ['$contains', '$endsWith'] satisfies Array<keyof Rdf3xObjectTextSearchPattern>) {\n const textValue = (value as Rdf3xObjectTextSearchPattern)[operator];\n if (textValue === undefined) {\n continue;\n }\n hasOperator = true;\n if (typeof textValue !== 'string') {\n return false;\n }\n }\n return hasOperator;\n}\n\nfunction isSupportedRdf3xObjectRangeValue(value: unknown): boolean {\n if (typeof value === 'number') {\n return Number.isFinite(value);\n }\n if (typeof value === 'string') {\n return true;\n }\n return isTerm(value as any);\n}\n\nfunction numericRangeValue(value: Term | string | number | boolean): number | undefined {\n if (typeof value === 'boolean') {\n return undefined;\n }\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n if (value.termType !== 'Literal' || !isRdfNumericDatatype(value.datatype.value)) {\n return undefined;\n }\n const parsed = rdfNumericValue(value.value);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction isSemanticallyOrdered(options?: QueryOptions): boolean {\n return Boolean(options?.order && options.order.length > 0);\n}\n\nfunction isSemanticallyOrderedRdf3xJoinShape(shape: Rdf3xJoinBenchmarkShape): boolean {\n switch (shape.kind) {\n case 'join':\n case 'group-count':\n case 'group-aggregate':\n return Boolean(shape.options?.orderBy && shape.options.orderBy.length > 0);\n case 'join-count':\n case 'join-aggregate':\n return false;\n default: {\n const exhaustive: never = shape;\n throw new Error(`Unsupported RDF-3X benchmark shape: ${JSON.stringify(exhaustive)}`);\n }\n }\n}\n\nfunction benchmarkSide(keys: string[], durationsMs: number[]): RdfModelShadowBenchmarkSide {\n return {\n returnedRows: keys.length,\n checksum: checksum(keys, false),\n orderedChecksum: checksum(keys, true),\n durationsMs,\n p50DurationMs: percentile(durationsMs, 0.5),\n p95DurationMs: percentile(durationsMs, 0.95),\n };\n}\n\nfunction diffBindingKeys(primaryKeys: string[], candidateKeys: string[]): RdfShadowDiff {\n const primarySet = new Set(primaryKeys);\n const candidateSet = new Set(candidateKeys);\n return {\n missingFromPrimary: Array.from(candidateSet).filter((key) => !primarySet.has(key)).sort(),\n extraInPrimary: Array.from(primarySet).filter((key) => !candidateSet.has(key)).sort(),\n };\n}\n\nfunction comparePerformance(\n compatibility: RdfModelShadowBenchmarkSide,\n solidRdf: RdfModelShadowBenchmarkSide,\n): RdfModelShadowPerformanceComparison {\n const p95DeltaMs = solidRdf.p95DurationMs - compatibility.p95DurationMs;\n const p95Ratio = solidRdf.p95DurationMs / Math.max(1, compatibility.p95DurationMs);\n return {\n p95DeltaMs,\n p95Ratio,\n matched: p95DeltaMs <= PERFORMANCE_P95_MIN_ABSOLUTE_HEADROOM_MS\n || p95Ratio <= PERFORMANCE_P95_MAX_RATIO,\n };\n}\n\nfunction compareSpace(\n compatibility: StoreStats,\n solidRdf: RdfIndexStats,\n): RdfModelShadowSpaceComparison {\n if (\n compatibility.databaseBytes === undefined\n || compatibility.tableBytes === undefined\n || compatibility.indexBytes === undefined\n ) {\n return {\n databaseDeltaBytes: 0,\n tableDeltaBytes: 0,\n indexDeltaBytes: 0,\n databaseRatio: 0,\n tableRatio: 0,\n indexRatio: 0,\n matched: false,\n unavailableReason: 'compatibility store did not report database/table/index bytes',\n };\n }\n\n const databaseDeltaBytes = solidRdf.databaseBytes - compatibility.databaseBytes;\n const tableDeltaBytes = solidRdf.tableBytes - compatibility.tableBytes;\n const indexDeltaBytes = solidRdf.indexBytes - compatibility.indexBytes;\n\n return {\n databaseDeltaBytes,\n tableDeltaBytes,\n indexDeltaBytes,\n databaseRatio: ratio(solidRdf.databaseBytes, compatibility.databaseBytes),\n tableRatio: ratio(solidRdf.tableBytes, compatibility.tableBytes),\n indexRatio: ratio(solidRdf.indexBytes, compatibility.indexBytes),\n matched: databaseDeltaBytes <= 0 && tableDeltaBytes <= 0 && indexDeltaBytes <= 0,\n };\n}\n\nfunction ratio(candidate: number, baseline: number): number {\n if (baseline <= 0) {\n return candidate <= 0 ? 1 : Number.POSITIVE_INFINITY;\n }\n return candidate / baseline;\n}\n\nfunction missingExpectedPlan(testCase: RdfModelBenchmarkCase, metrics: RdfIndexMetrics): string[] {\n return [\n ...testCase.expectedPlan.filter((label) => !matchesExpectedPlanLabel(label, testCase, metrics)),\n ...unresolvedPlanFailures(metrics.queryPlan ?? []),\n ];\n}\n\nfunction matchesExpectedPlanLabel(label: string, testCase: RdfModelBenchmarkCase, metrics: RdfIndexMetrics): boolean {\n const pattern = testCase.query.pattern;\n const planText = (metrics.queryPlan ?? []).join('\\n');\n switch (label) {\n case 'graph-scope':\n return Boolean(pattern.graph) && metrics.indexChoice.includes('G');\n case 'type-filter':\n return isTerm(pattern.predicate as any)\n && termToId(pattern.predicate as any) === RDF_TYPE\n && Boolean(pattern.object)\n && metrics.indexChoice !== 'full-scan';\n case 'predicate-filter':\n return Boolean(pattern.predicate) && metrics.indexChoice.includes('P');\n case 'predicate-object-filter':\n return Boolean(pattern.predicate) && Boolean(pattern.object) && metrics.indexChoice.includes('P');\n case 'predicate-object-range-filter':\n return Boolean(pattern.predicate)\n && (planText.includes('_range') || planText.includes('LexicalRange(') || planText.includes('NumericRange('));\n case 'limit':\n return testCase.query.options?.limit !== undefined && planText.includes('LIMIT');\n case 'order':\n return Boolean(testCase.query.options?.order?.length) && planText.includes('ORDER BY');\n case 'text-index':\n return planText.includes('TextSearch(');\n case 'rdf-subject-join':\n return planText.includes('TextSearch(')\n && metrics.indexChoice !== 'full-scan'\n && metrics.matchedRows >= metrics.returnedRows;\n case 'SPOG':\n case 'POSG':\n case 'GSPO':\n case 'GPOS':\n case 'OSPG':\n return metrics.indexChoice === label;\n default:\n return false;\n }\n}\n\nfunction missingExpectedRdf3xPlan(testCase: RdfModelBenchmarkCase, metrics: Rdf3xIndexMetrics): string[] {\n return [\n ...testCase.expectedPlan.filter((label) => !matchesExpectedRdf3xPlanLabel(label, testCase, metrics)),\n ...unresolvedPlanFailures(metrics.queryPlan ?? []),\n ];\n}\n\nfunction matchesExpectedRdf3xPlanLabel(\n label: string,\n testCase: RdfModelBenchmarkCase,\n metrics: Rdf3xIndexMetrics,\n): boolean {\n const pattern = testCase.query.pattern;\n const planText = (metrics.queryPlan ?? []).join('\\n');\n switch (label) {\n case 'graph-scope':\n return Boolean(pattern.graph)\n && (metrics.indexChoice === 'source-membership'\n || planText.includes('GraphPrefixMembershipFilter')\n || planText.includes('GraphMembershipFilter'));\n case 'type-filter':\n return isTerm(pattern.predicate as any)\n && termToId(pattern.predicate as any) === RDF_TYPE\n && Boolean(pattern.object)\n && metrics.indexChoice !== 'none';\n case 'predicate-filter':\n return Boolean(pattern.predicate) && metrics.indexChoice !== 'none';\n case 'predicate-object-filter':\n return Boolean(pattern.predicate) && Boolean(pattern.object) && metrics.indexChoice !== 'none';\n case 'predicate-object-range-filter':\n return Boolean(pattern.predicate)\n && (planText.includes('NumericRange(') || planText.includes('LexicalRange('));\n case 'limit':\n return testCase.query.options?.limit !== undefined\n && (planText.includes('Pagination') || planText.includes('LIMIT'));\n case 'order':\n return Boolean(testCase.query.options?.order?.length)\n && (planText.includes('ORDER BY') || planText.includes('Rdf3xJoinOrder('));\n case 'text-index':\n return planText.includes('TextSearch(');\n case 'rdf-subject-join':\n return planText.includes('TextSearch(')\n && metrics.indexChoice !== 'none'\n && metrics.matchedRows >= metrics.returnedRows;\n case 'SPOG':\n return matchesRdf3xPermutation(metrics, 'SPO');\n case 'POSG':\n return matchesRdf3xPermutation(metrics, 'POS');\n case 'OSPG':\n return matchesRdf3xPermutation(metrics, 'OSP');\n case 'GSPO':\n return matchesExpectedRdf3xPlanLabel('graph-scope', testCase, metrics)\n && matchesRdf3xPermutation(metrics, 'SPO');\n case 'GPOS':\n return matchesExpectedRdf3xPlanLabel('graph-scope', testCase, metrics)\n && matchesRdf3xPermutation(metrics, 'POS');\n default:\n return false;\n }\n}\n\nfunction matchesRdf3xPermutation(metrics: Rdf3xIndexMetrics, permutation: Rdf3xPermutationName): boolean {\n const planText = (metrics.queryPlan ?? []).join('\\n');\n return metrics.indexChoice === permutation || planText.includes(`Rdf3xPermutationScan(${permutation})`);\n}\n\nfunction missingExpectedQueryPlan(\n testCase: RdfModelQueryBenchmarkCase,\n metrics: RdfQueryMetrics,\n returnedRows: number,\n): string[] {\n return [\n ...testCase.expectedPlan.filter((label) => !matchesExpectedQueryPlanLabel(label, metrics)),\n ...unresolvedPlanFailures(metrics.plan),\n ...minimumReturnedRowsFailures(testCase, returnedRows),\n ];\n}\n\nfunction unresolvedPlanFailures(plan: readonly string[]): string[] {\n return hasUnresolvedPlan(plan) ? ['resolved-terms'] : [];\n}\n\nfunction hasUnresolvedPlan(plan: readonly string[]): boolean {\n return plan.some((entry) => /\\bunresolved\\b/i.test(entry));\n}\n\nfunction minimumReturnedRowsFailures(\n testCase: RdfModelQueryBenchmarkCase,\n returnedRows: number,\n): string[] {\n const minimum = testCase.minReturnedRows ?? 0;\n return returnedRows >= minimum ? [] : [`min-rows:${minimum}`];\n}\n\nfunction matchesExpectedQueryPlanLabel(label: string, metrics: RdfQueryMetrics): boolean {\n const planText = metrics.plan.join('\\n');\n switch (label) {\n case 'group-count-index':\n return planText.includes('Aggregate(group-count-index)');\n case 'group-aggregate-index':\n return planText.includes('Aggregate(group-basic-multi-index)')\n || planText.includes('Aggregate(group-basic-index)');\n case 'having-pushdown':\n return (planText.includes('IndexGroupCountHaving(')\n || planText.includes('IndexGroupAggregateHaving('))\n && !planText.includes('\\nHaving(');\n case 'order':\n return (planText.includes('IndexGroupCountOrder(')\n || planText.includes('IndexGroupAggregateOrder('))\n && !planText.includes('\\nSort');\n case 'limit':\n return (planText.includes('IndexGroupCountLimit')\n || planText.includes('IndexGroupAggregateLimit'))\n && !planText.includes('\\nLimit');\n case 'join-index':\n return planText.includes('IndexJoin(')\n && !planText.includes('\\nIndexScan(');\n case 'join-order-pushdown':\n return planText.includes('IndexJoinOrder(')\n && !planText.includes('\\nSort');\n case 'join-limit-pushdown':\n return planText.includes('IndexJoinLimit')\n && !planText.includes('\\nLimit');\n case 'range-filter-pushdown':\n return metrics.filtersPushedDown > 0\n && planText.includes('LexicalRange(');\n case 'join-count-index':\n return planText.includes('Aggregate(join-count-distinct-index)')\n && planText.includes('IndexJoinCount(')\n && !planText.includes('\\nIndexScan(');\n default:\n return false;\n }\n}\n\nfunction missingExpectedRdf3xJoinPlan(\n testCase: RdfModelQueryBenchmarkCase,\n metrics: Rdf3xJoinMetrics,\n returnedRows: number,\n): string[] {\n return [\n ...testCase.expectedPlan.filter((label) => !matchesExpectedRdf3xJoinPlanLabel(label, metrics)),\n ...unresolvedPlanFailures(metrics.queryPlan ?? []),\n ...minimumReturnedRowsFailures(testCase, returnedRows),\n ];\n}\n\nfunction matchesExpectedRdf3xJoinPlanLabel(label: string, metrics: Rdf3xJoinMetrics): boolean {\n const planText = (metrics.queryPlan ?? []).join('\\n');\n switch (label) {\n case 'group-count-index':\n return planText.includes('Rdf3xJoinGroupCount(');\n case 'group-aggregate-index':\n return planText.includes('Rdf3xJoinGroupAggregate(')\n || planText.includes('Rdf3xJoinGroupAggregateNumeric(');\n case 'having-pushdown':\n return planText.includes('Rdf3xJoinGroupCountHaving(')\n || planText.includes('Rdf3xJoinGroupAggregateHaving(');\n case 'order':\n return planText.includes('Rdf3xJoinGroupCountOrder(')\n || planText.includes('Rdf3xJoinGroupAggregateOrder(');\n case 'limit':\n return planText.includes('Rdf3xJoinGroupCountLimit')\n || planText.includes('Rdf3xJoinGroupAggregateLimit');\n case 'join-index':\n return planText.includes('Rdf3xJoinBGP(');\n case 'join-order-pushdown':\n return planText.includes('Rdf3xJoinOrder(');\n case 'join-limit-pushdown':\n return planText.includes('Rdf3xJoinLimit');\n case 'range-filter-pushdown':\n return planText.includes('LexicalRange(') || planText.includes('NumericRange(');\n case 'join-count-index':\n return planText.includes('Rdf3xJoinCount(');\n default:\n return false;\n }\n}\n\nfunction bindingKey(binding: RdfBindingRow): string {\n return Object.keys(binding)\n .sort()\n .map((key) => `${key}=${termToId(binding[key] as any)}`)\n .join('\\u001f');\n}\n\nfunction checksum(keys: string[], ordered: boolean): string {\n const normalized = ordered ? keys : [...keys].sort();\n return createHash('sha256')\n .update(normalized.join('\\n'))\n .digest('hex');\n}\n\nfunction percentile(values: number[], percentileValue: number): number {\n if (values.length === 0) {\n return 0;\n }\n const sorted = [...values].sort((a, b) => a - b);\n const index = Math.min(\n sorted.length - 1,\n Math.max(0, Math.ceil(sorted.length * percentileValue) - 1),\n );\n return sorted[index];\n}\n\nfunction scaleRank(scale: RdfBenchmarkScale): number {\n switch (scale) {\n case 'small':\n return 1;\n case 'medium':\n return 2;\n case 'large':\n return 3;\n default: {\n const exhaustive: never = scale;\n return exhaustive;\n }\n }\n}\n\nfunction serializePattern(pattern: QuintPattern): JsonPattern {\n return Object.fromEntries(\n Object.entries(pattern).map(([key, value]) => [key, serializePatternValue(value)]),\n );\n}\n\nfunction serializeQueryPlan(query: RdfQuery): JsonPattern {\n return serializePatternValue(query) as JsonPattern;\n}\n\nfunction serializePatternValue(value: unknown): unknown {\n if (!value) {\n return value;\n }\n if (isTerm(value as any)) {\n return termToId(value as any);\n }\n if (Array.isArray(value)) {\n return value.map(serializePatternValue);\n }\n if (typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .map(([key, nested]) => [key, serializePatternValue(nested)]),\n );\n }\n return value;\n}\n"]}
1
+ {"version":3,"file":"models-benchmark.js","sourceRoot":"","sources":["../../../src/storage/rdf/models-benchmark.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from 'node:crypto';\nimport { DataFactory } from 'n3';\nimport { termToId } from 'n3';\nimport type { Quad, Term } from '@rdfjs/types';\nimport type { QuintPattern, QueryOptions, QuintStore, StoreStats } from '../quint/types';\nimport { isTerm } from '../quint/types';\nimport type {\n Rdf3xJoinMetrics,\n Rdf3xIndexMetrics,\n Rdf3xIndexStats,\n Rdf3xObjectOperatorPattern,\n Rdf3xObjectRangePattern,\n Rdf3xObjectTextSearchPattern,\n Rdf3xPermutationName,\n Rdf3xTermInPattern,\n Rdf3xTermNotInPattern,\n Rdf3xTriplePattern,\n RdfBindingRow,\n RdfDerivedIndexRefreshResult,\n RdfEngineColdStartPhaseStats,\n RdfEngineLike,\n RdfEngineStorageStats,\n RdfIndexMetrics,\n RdfIndexStats,\n RdfQuery,\n RdfQueryMetrics,\n RdfQuadJoinCountOptions,\n RdfQuadJoinGroupAggregateHaving,\n RdfQuadJoinGroupAggregateOptions,\n RdfQuadJoinOptions,\n RdfQuadJoinPattern,\n RdfQueryAggregate,\n RdfQueryFilter,\n RdfQueryPattern,\n RdfQueryPatternKey,\n RdfTextChunkInput,\n RdfTextSourceInput,\n RdfVectorChunkInput,\n RdfVectorSourceInput,\n RdfShadowDiff,\n} from './types';\nimport { canonicalQuadKey, diffQuads } from './RdfShadowComparator';\nimport type { SolidRdfEngine } from './SolidRdfEngine';\nimport { isRdfNumericDatatype, rdfNumericValue } from './RdfTermSemantics';\n\nconst { namedNode, literal, quad } = DataFactory;\n\nexport type RdfBenchmarkScale = 'small' | 'medium' | 'large';\nexport type RdfBenchmarkCaseProfile = 'default' | 'extreme' | 'fusion' | 'all';\n\nexport const RDF_MODELS_SYNTHETIC_MESSAGE_QUADS = 9;\nexport const RDF_MODELS_NATIVE_STRESS_MESSAGE_QUADS = 9;\nexport const RDF_MODELS_NATIVE_STRESS_MESSAGE_COUNT = 1024;\nexport const RDF_MODELS_SEARCH_FUSION_BROAD_SOURCE_COUNT = 32;\n\nconst RDF_MODELS_SEARCH_FUSION_BROAD_SOURCE_COUNTS: Record<RdfBenchmarkScale, number> = {\n small: RDF_MODELS_SEARCH_FUSION_BROAD_SOURCE_COUNT,\n medium: 256,\n large: 4096,\n};\n\nconst RDF_MODELS_SCALE_TARGET_QUADS: Record<RdfBenchmarkScale, number> = {\n small: 48,\n medium: 10_000,\n large: 1_000_000,\n};\n\nconst RDF_MODELS_SYNTHETIC_POD_COUNTS: Record<RdfBenchmarkScale, number> = {\n small: 1,\n medium: 1,\n large: 4,\n};\n\nexport interface RdfModelBenchmarkCase {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: {\n pattern: QuintPattern;\n options?: QueryOptions;\n };\n expectedPlan: string[];\n}\n\nexport interface RdfModelQueryBenchmarkCase {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n minReturnedRows?: number;\n benchmarkCache?: 'bypass' | 'preserve';\n minWarmupIterations?: number;\n query: RdfQuery;\n expectedPlan: string[];\n}\n\nexport interface RdfModelBenchmarkRunOptions {\n cases?: readonly RdfModelBenchmarkCase[];\n queryCases?: readonly RdfModelQueryBenchmarkCase[];\n caseProfile?: RdfBenchmarkCaseProfile;\n scale?: RdfBenchmarkScale;\n iterations?: number;\n}\n\nexport interface RdfModelPostgresBenchmarkRunOptions extends RdfModelBenchmarkRunOptions {\n refreshDerivedIndexes?: boolean;\n refreshMutationSources?: number;\n refreshMutationQuadsPerSource?: number;\n warmupIterations?: number;\n concurrency?: number;\n servingRegressionThresholds?: RdfModelPostgresBenchmarkGateThresholds;\n fusionBenchmarkThresholds?: RdfModelPostgresBenchmarkGateThresholds;\n fusionBenchmarkBaselines?: Record<string, RdfModelPostgresBenchmarkGateBaseline>;\n}\n\nexport interface RdfModelBenchmarkResult {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: {\n pattern: JsonPattern;\n options?: QueryOptions;\n };\n expectedPlan: string[];\n planMatched: boolean;\n missingPlan: string[];\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n returnedRows: number;\n checksum: string;\n orderedChecksum: string;\n durationsMs: number[];\n p50DurationMs: number;\n p95DurationMs: number;\n metrics: RdfIndexMetrics;\n indexStats: RdfIndexStats;\n}\n\nexport interface RdfModelQueryBenchmarkResult {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: JsonPattern;\n expectedPlan: string[];\n planMatched: boolean;\n missingPlan: string[];\n physicalPlan: string[];\n scannedRows: number;\n indexChoices: string[];\n fallbackReason: string | null;\n returnedRows: number;\n checksum: string;\n orderedChecksum: string;\n durationsMs: number[];\n p50DurationMs: number;\n p95DurationMs: number;\n metrics: RdfQueryMetrics;\n indexStats: RdfIndexStats;\n}\n\nexport interface RdfModelBenchmarkReport {\n engine: 'solid-rdf';\n scale: RdfBenchmarkScale;\n caseProfile: RdfBenchmarkCaseProfile;\n iterations: number;\n generatedAt: string;\n planMatched: boolean;\n failedPlanCases: string[];\n performanceCosts: RdfModelBenchmarkPerformanceCosts;\n storage: RdfEngineStorageStats;\n cases: RdfModelBenchmarkResult[];\n queryCases: RdfModelQueryBenchmarkResult[];\n}\n\nexport interface RdfModelPostgresBenchmarkReport {\n engine: 'postgres-rdf';\n scale: RdfBenchmarkScale;\n caseProfile: RdfBenchmarkCaseProfile;\n iterations: number;\n warmupIterations: number;\n concurrency: number;\n generatedAt: string;\n planMatched: boolean;\n failedPlanCases: string[];\n concurrencyGate: RdfModelPostgresConcurrencyGate;\n servingRegressionGate: RdfModelPostgresServingRegressionGate;\n fusionBenchmarkGate: RdfModelPostgresFusionBenchmarkGate;\n refresh?: RdfDerivedIndexRefreshResult;\n refreshBenchmark?: RdfModelPostgresRefreshBenchmark;\n postWriteRefreshBenchmark?: RdfModelPostgresPostWriteRefreshBenchmark;\n coldStartBenchmark?: RdfModelPostgresColdStartBenchmark;\n performanceCosts: RdfModelBenchmarkPerformanceCosts;\n storage: RdfEngineStorageStats;\n cases: RdfModelBenchmarkResult[];\n queryCases: RdfModelQueryBenchmarkResult[];\n}\n\nexport interface RdfModelBenchmarkPerformanceCosts {\n storageOverhead: {\n factsBytes: number;\n derivedBytes: number;\n totalBytes: number;\n derivedToFactsRatio: number;\n totalToFactsRatio: number;\n };\n indexBuild?: {\n durationMs: number;\n refreshed: boolean;\n plannerStatsDurationMs?: number;\n rebuildMode?: RdfModelPostgresRefreshBenchmark['rebuildMode'];\n dirtyGraphs?: number;\n dirtyPairs?: number;\n dirtyTerms?: number;\n };\n coldStart?: {\n durationMs?: number;\n };\n}\n\nexport interface RdfModelPostgresColdStartBenchmark {\n startup?: {\n status: NonNullable<RdfEngineStorageStats['lifecycle']>['status'];\n driver?: string;\n openCount: number;\n startedAt?: string;\n readyAt?: string;\n durationMs?: number;\n phases: RdfEngineColdStartPhaseStats[];\n };\n firstQueryAfterRefresh?: RdfModelPostgresColdStartQueryBenchmark;\n warmSteadyState?: RdfModelPostgresWarmSteadyStateBenchmark;\n}\n\nexport interface RdfModelPostgresColdStartQueryBenchmark {\n queryCase: string;\n durationMs: number;\n planMatched: boolean;\n missingPlan: string[];\n physicalPlan: string[];\n indexChoices: string[];\n scannedRows: number;\n returnedRows: number;\n cacheMode: 'bypass';\n}\n\nexport interface RdfModelPostgresWarmSteadyStateBenchmark {\n queryCase: string;\n iterations: number;\n warmupIterations: number;\n durationsMs: number[];\n p50DurationMs: number;\n p95DurationMs: number;\n planMatched: boolean;\n returnedRows: number;\n}\n\nexport interface RdfModelPostgresRefreshBenchmark {\n durationMs: number;\n refreshed: boolean;\n previousFactsDataVersion?: number;\n factsDataVersion?: number;\n syncedWithFacts?: boolean;\n rebuildMode?: string;\n dirtyGraphs?: number;\n dirtyPairs?: number;\n dirtyTerms?: number;\n plannerStatsDurationMs?: number;\n analyzedTables?: string[];\n sourceQueue?: {\n pendingSources: number;\n drainedSources: number;\n };\n}\n\nexport interface RdfModelPostgresPostWriteRefreshBenchmark extends RdfModelPostgresRefreshBenchmark {\n mutationSources: number;\n mutationQuadsPerSource: number;\n mutationQuads: number;\n pendingSourcesBeforeRefresh: number;\n factsDataVersionBeforeRefresh?: number;\n matched: boolean;\n failedReasons: string[];\n}\n\nexport interface RdfModelPostgresConcurrencyGate {\n enabled: boolean;\n concurrency: number;\n cases: RdfModelPostgresConcurrencyGateCase[];\n matched: boolean;\n failedCases: string[];\n}\n\nexport interface RdfModelPostgresBenchmarkGateThresholds {\n maxP95DurationMs?: number;\n maxDurationMs?: number;\n maxScannedRows?: number;\n cases?: Record<string, RdfModelPostgresBenchmarkGateCaseThresholds>;\n}\n\nexport interface RdfModelPostgresBenchmarkGateCaseThresholds {\n maxP95DurationMs?: number;\n maxDurationMs?: number;\n maxScannedRows?: number;\n}\n\nexport interface RdfModelPostgresBenchmarkGateBaseline {\n label?: string;\n p95DurationMs?: number;\n maxDurationMs?: number;\n scannedRows?: number;\n maxP95DurationMs?: number;\n maxScannedRows?: number;\n}\n\nexport interface RdfModelPostgresServingRegressionGate {\n enabled: boolean;\n caseProfile: RdfBenchmarkCaseProfile;\n thresholds?: RdfModelPostgresBenchmarkGateThresholds;\n cases: RdfModelPostgresServingRegressionGateCase[];\n matched: boolean;\n failedCases: string[];\n}\n\nexport interface RdfModelPostgresServingRegressionGateCase {\n name: string;\n matched: boolean;\n planMatched: boolean;\n expectedPlan: string[];\n missingPlan: string[];\n failedReasons: string[];\n physicalPlan: string[];\n scannedRows: number;\n returnedRows: number;\n p95DurationMs: number;\n}\n\nexport interface RdfModelPostgresFusionBenchmarkGate {\n enabled: boolean;\n caseProfile: RdfBenchmarkCaseProfile;\n thresholds?: RdfModelPostgresBenchmarkGateThresholds;\n cases: RdfModelPostgresFusionBenchmarkGateCase[];\n matched: boolean;\n failedCases: string[];\n}\n\nexport interface RdfModelPostgresFusionBenchmarkGateCase {\n name: string;\n matched: boolean;\n planMatched: boolean;\n failedReasons: string[];\n baselineComparison?: RdfModelPostgresBenchmarkGateBaselineComparison;\n candidateSources: string[];\n sourceEstimateCount: number;\n sourceChoiceCount: number;\n hardFiltersBeforeRank: boolean;\n rankInputs: boolean;\n rankWeights: boolean;\n rankTieBreaker: boolean;\n resultCacheBypassed: boolean;\n broadCandidateRows: number;\n batchedBroadCandidateJoin: boolean;\n scannedRows: number;\n returnedRows: number;\n p95DurationMs: number;\n}\n\nexport interface RdfModelPostgresBenchmarkGateBaselineComparison {\n label?: string;\n matched: boolean;\n failedReasons: string[];\n p95DurationMsBaseline?: number;\n maxP95DurationMs?: number;\n p95DurationMsDelta?: number;\n p95DurationMsRatio?: number;\n scannedRowsBaseline?: number;\n maxScannedRows?: number;\n scannedRowsDelta?: number;\n scannedRowsRatio?: number;\n}\n\nexport interface RdfModelPostgresConcurrencyGateCase {\n name: string;\n concurrency: number;\n iterationsPerLane: number;\n matched: boolean;\n planMatched: boolean;\n expectedReturnedRows: number;\n returnedRows: number[];\n expectedChecksum: string;\n checksums: string[];\n expectedOrderedChecksum: string;\n orderedChecksums: string[];\n missingPlan: string[];\n durationsMs: number[];\n p50DurationMs: number;\n p95DurationMs: number;\n}\n\nexport interface RdfModelsBenchmarkSeedOptions {\n syntheticMessages: number;\n syntheticPodCount: number;\n caseProfile?: RdfBenchmarkCaseProfile;\n searchFusionBroadSourceCount?: number;\n}\n\ninterface RdfModelsSearchFusionSource {\n source: string;\n localPath: string;\n content: string;\n embedding: number[];\n heading: string;\n}\n\nexport interface RdfModelShadowBenchmarkRunOptions extends RdfModelBenchmarkRunOptions {}\n\nexport interface RdfModelShadowBenchmarkSide {\n returnedRows: number;\n checksum: string;\n orderedChecksum: string;\n durationsMs: number[];\n p50DurationMs: number;\n p95DurationMs: number;\n storeStats?: StoreStats;\n}\n\nexport interface RdfModelShadowPerformanceComparison {\n p95DeltaMs: number;\n p95Ratio: number;\n matched: boolean;\n}\n\nexport interface RdfModelShadowSpaceComparison {\n databaseDeltaBytes: number;\n tableDeltaBytes: number;\n indexDeltaBytes: number;\n databaseRatio: number;\n tableRatio: number;\n indexRatio: number;\n matched: boolean;\n unavailableReason?: string;\n}\n\nexport interface RdfModelShadowBenchmarkResult {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: {\n pattern: JsonPattern;\n options?: QueryOptions;\n };\n expectedPlan: string[];\n planMatched: boolean;\n missingPlan: string[];\n matched: boolean;\n orderedMatch: boolean;\n diff: RdfShadowDiff;\n compatibility: RdfModelShadowBenchmarkSide;\n solidRdf: RdfModelShadowBenchmarkSide & {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n metrics: RdfIndexMetrics;\n indexStats: RdfIndexStats;\n };\n performance: RdfModelShadowPerformanceComparison;\n space: RdfModelShadowSpaceComparison;\n}\n\nexport interface RdfModelShadowBenchmarkReport {\n engine: 'shadow';\n compatibilityEngine: 'quint-store';\n candidateEngine: 'solid-rdf';\n scale: RdfBenchmarkScale;\n caseProfile: RdfBenchmarkCaseProfile;\n iterations: number;\n generatedAt: string;\n matched: boolean;\n orderedMatched: boolean;\n planMatched: boolean;\n spaceGateEnforced: boolean;\n performanceMatched: boolean;\n spaceMatched: boolean;\n failedPlanCases: string[];\n failedPerformanceCases: string[];\n failedSpaceCases: string[];\n cases: RdfModelShadowBenchmarkResult[];\n}\n\nexport interface RdfModelRdf3xShadowBenchmarkResult {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: {\n pattern: JsonPattern;\n options?: QueryOptions;\n };\n expectedPlan: string[];\n planMatched: boolean;\n missingPlan: string[];\n supported: boolean;\n unsupportedReason?: string;\n matched: boolean;\n orderedMatch: boolean;\n diff: RdfShadowDiff;\n solidRdf: RdfModelShadowBenchmarkSide & {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n metrics: RdfIndexMetrics;\n indexStats: RdfIndexStats;\n };\n rdf3x?: RdfModelShadowBenchmarkSide & {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n metrics: Rdf3xIndexMetrics;\n indexStats: Rdf3xIndexStats;\n };\n}\n\nexport interface RdfModelRdf3xShadowJoinBenchmarkResult {\n name: string;\n resource: string;\n purpose: string;\n minScale: RdfBenchmarkScale;\n query: JsonPattern;\n expectedPlan: string[];\n planMatched: boolean;\n missingPlan: string[];\n supported: boolean;\n unsupportedReason?: string;\n matched: boolean;\n orderedMatch: boolean;\n diff: RdfShadowDiff;\n solidRdf: RdfModelShadowBenchmarkSide & {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n metrics: RdfIndexMetrics;\n indexStats: RdfIndexStats;\n };\n rdf3x?: RdfModelShadowBenchmarkSide & {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n metrics: Rdf3xJoinMetrics;\n indexStats: Rdf3xIndexStats;\n };\n}\n\nexport interface RdfModelRdf3xShadowBenchmarkReport {\n engine: 'rdf3x-shadow';\n primaryEngine: 'solid-rdf';\n candidateEngine: 'solid-rdf3x';\n scale: RdfBenchmarkScale;\n caseProfile: RdfBenchmarkCaseProfile;\n iterations: number;\n generatedAt: string;\n matched: boolean;\n orderedMatched: boolean;\n planMatched: boolean;\n skippedCases: string[];\n skippedJoinCases: string[];\n failedCases: string[];\n failedJoinCases: string[];\n failedPlanCases: string[];\n rebuild: {\n scannedQuads: number;\n uniqueTriples: number;\n memberships: number;\n projectionRows: number;\n durationMs: number;\n };\n storage: RdfEngineStorageStats;\n cases: RdfModelRdf3xShadowBenchmarkResult[];\n joinCases: RdfModelRdf3xShadowJoinBenchmarkResult[];\n}\n\ntype Rdf3xJoinBenchmarkShape =\n | {\n kind: 'join';\n patterns: RdfQuadJoinPattern[];\n options?: RdfQuadJoinOptions;\n }\n | {\n kind: 'join-count' | 'join-aggregate';\n patterns: RdfQuadJoinPattern[];\n options: RdfQuadJoinCountOptions;\n }\n | {\n kind: 'group-count' | 'group-aggregate';\n patterns: RdfQuadJoinPattern[];\n options: RdfQuadJoinGroupAggregateOptions;\n };\n\ntype JsonPattern = Record<string, unknown>;\n\nexport const RDF_MODELS_BENCHMARK_POD = 'https://pod.example/alice';\nconst DATA = `${RDF_MODELS_BENCHMARK_POD}/.data`;\nconst NATIVE_STRESS_GRAPH = `${DATA}/chat/default/2026/05/18/native-stress.ttl`;\nconst SETTINGS = `${RDF_MODELS_BENCHMARK_POD}/settings`;\nconst WORKSPACE = 'file://macbook.local/Users/alice/project/';\nconst RDF_MODELS_SEARCH_VECTOR_MODEL = 'xpod-benchmark-embedding-v1';\nconst RDF_TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';\nconst DCT_CREATED = 'http://purl.org/dc/terms/created';\nconst DCT_MODIFIED = 'http://purl.org/dc/terms/modified';\nconst DCT_DESCRIPTION = 'http://purl.org/dc/terms/description';\nconst DCT_TITLE = 'http://purl.org/dc/terms/title';\nconst DCT_TYPE = 'http://purl.org/dc/terms/type';\nconst DCT_CREATOR = 'http://purl.org/dc/terms/creator';\nconst SIOC_CONTENT = 'http://rdfs.org/sioc/ns#content';\nconst SIOC_HAS_MEMBER = 'http://rdfs.org/sioc/ns#has_member';\nconst SIOC_HAS_CONTAINER = 'http://rdfs.org/sioc/ns#has_container';\nconst SIOC_HAS_PARENT = 'http://rdfs.org/sioc/ns#has_parent';\nconst UDFS = 'https://undefineds.co/ns#';\nconst XPOD_AI = 'https://vocab.xpod.dev/ai#';\nconst XPOD_CREDENTIAL = 'https://vocab.xpod.dev/credential#';\nconst MEETING = 'http://www.w3.org/ns/pim/meeting#';\nconst SIOC = 'http://rdfs.org/sioc/ns#';\nconst WF_MESSAGE = 'http://www.w3.org/2005/01/wf/flow-1.0#message';\nconst FOAF_AGENT = 'http://xmlns.com/foaf/0.1/Agent';\nconst FOAF_PERSON = 'http://xmlns.com/foaf/0.1/Person';\nconst FOAF_MAKER = 'http://xmlns.com/foaf/0.1/maker';\nconst FOAF_PRIMARY_TOPIC = 'http://xmlns.com/foaf/0.1/primaryTopic';\nconst VCARD_INDIVIDUAL = 'http://www.w3.org/2006/vcard/ns#Individual';\nconst VCARD_FN = 'http://www.w3.org/2006/vcard/ns#fn';\nconst LDP_INBOX = 'http://www.w3.org/ns/ldp#inbox';\nconst SCHEMA_PROPERTY_VALUE = 'http://schema.org/PropertyValue';\nconst SCHEMA_CREATIVE_WORK = 'http://schema.org/CreativeWork';\nconst XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer';\nconst XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal';\nconst XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean';\nconst ACL = 'http://www.w3.org/ns/auth/acl#';\nconst ACP = 'http://www.w3.org/ns/solid/acp#';\nconst AS = 'https://www.w3.org/ns/activitystreams#';\nconst ODRL = 'http://www.w3.org/ns/odrl/2/';\nconst RDF_MODELS_SYNTHETIC_THREAD_COUNT = 64;\nconst PERFORMANCE_P95_MIN_ABSOLUTE_HEADROOM_MS = 25;\nconst PERFORMANCE_P95_MAX_RATIO = 8;\nconst POSTGRES_CONCURRENCY_GATE_QUERY_CASE_NAMES = [\n 'modeled thread message page query',\n 'scheduled task trigger keyset continuation query',\n 'settings owner category keyset query',\n 'provider model credential ordered join query',\n] as const;\n\nexport const rdfModelsBenchmarkCases: readonly RdfModelBenchmarkCase[] = [\n {\n name: 'list chats',\n resource: 'chat',\n purpose: 'surface list with graph-scope and type filter',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}LongChat`),\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list tasks',\n resource: 'task',\n purpose: 'task surface list with status/type filtering',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Task`),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list threads by chat',\n resource: 'thread',\n purpose: 'relation lookup under a chat index graph',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${SIOC}Thread`),\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'threads by modeled chat relation',\n resource: 'thread',\n purpose: 'thread.chat relation follows the models SIOC has_parent predicate, not a product-local chatId field',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(SIOC_HAS_PARENT),\n object: namedNode('https://pod.example/alice/.data/chat/default/index.ttl#this'),\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'list threads by task',\n resource: 'thread',\n purpose: 'relation lookup under a task index graph',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${SIOC}Thread`),\n graph: namedNode('https://pod.example/alice/.data/task/default/index.ttl'),\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'messages by modeled thread relation',\n resource: 'message',\n purpose: 'message.thread relation follows the models SIOC has_container predicate',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(SIOC_HAS_CONTAINER),\n object: namedNode('https://pod.example/alice/.data/chat/default/index.ttl#thread_1'),\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'chat latest message pointer',\n resource: 'chat',\n purpose: 'chat list hydration can resolve the latest-message URI stored on the Chat resource',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}lastMessage`),\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n },\n options: { order: ['subject'], limit: 20 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'limit'],\n },\n {\n name: 'list messages by thread',\n resource: 'message',\n purpose: 'date-bucketed message lookup through thread inverse membership',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(SIOC_HAS_MEMBER),\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'limit'],\n },\n {\n name: 'latest message',\n resource: 'message',\n purpose: 'ORDER BY + LIMIT over message date bucket',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(DCT_CREATED),\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n },\n options: { order: ['object'], reverse: true, limit: 1 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'order', 'limit'],\n },\n {\n name: 'latest run',\n resource: 'run',\n purpose: 'ORDER BY + LIMIT over date-bucketed run documents',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(DCT_CREATED),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n },\n options: { order: ['object'], reverse: true, limit: 1 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'order', 'limit'],\n },\n {\n name: 'pending runs',\n resource: 'run',\n purpose: 'status filter for scheduler and state center',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}status`),\n object: literal('queued'),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'running runs',\n resource: 'run',\n purpose: 'status filter for active runtime execution',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}status`),\n object: literal('running'),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'runs by workspace',\n resource: 'run',\n purpose: 'workspace relation filter for runtime placement and steering',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}workspace`),\n object: namedNode('file://macbook.local/Users/alice/project/'),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'runs by numeric priority',\n resource: 'run',\n purpose: 'typed numeric literal range filter for scheduler priority queues',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}priority`),\n object: { $gt: literal('9', namedNode('http://www.w3.org/2001/XMLSchema#integer')) },\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-range-filter', 'limit'],\n },\n {\n name: 'run with steps',\n resource: 'runStep',\n purpose: 'one-to-many run-step relation lookup',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}run`),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/2026/05/' },\n },\n options: { order: ['subject'], limit: 200 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'limit'],\n },\n {\n name: 'task materialization due time',\n resource: 'schedule',\n purpose: 'schedule due-time candidate lookup',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}nextRunAt`),\n object: { $lte: literal('2026-05-18T01:30:00.000Z') },\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['object'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-range-filter', 'order', 'limit'],\n },\n {\n name: 'cron tasks due time',\n resource: 'task',\n purpose: 'task scheduler can poll active cron/interval tasks directly from the Task model fields',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}nextRunAt`),\n object: { $lte: literal('2026-05-18T01:30:00.000Z') },\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['object'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-range-filter', 'order', 'limit'],\n },\n {\n name: 'waiting input runs',\n resource: 'run',\n purpose: 'runtime steering can find runs parked for approval or client tool output',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}status`),\n object: literal('waiting_input'),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'runs by lease owner',\n resource: 'run',\n purpose: 'distributed workers can look up currently leased runs without scanning all runtime facts',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}leaseOwner`),\n object: literal('worker-1'),\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'search message literals',\n resource: 'message',\n purpose: 'literal/text index candidate that reconnects to RDF subjects',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(SIOC_CONTENT),\n object: { $contains: 'searchable' },\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['text-index', 'rdf-subject-join'],\n },\n {\n name: 'load by exact id',\n resource: 'any',\n purpose: 'base-relative id expands to exact subject IRI',\n minScale: 'small',\n query: {\n pattern: {\n subject: namedNode('https://pod.example/alice/.data/chat/default/index.ttl#this'),\n },\n },\n expectedPlan: ['SPOG'],\n },\n {\n name: 'acl graph prefix scoped query',\n resource: 'any',\n purpose: 'scope filter must avoid unbounded full-pod scans',\n minScale: 'medium',\n query: {\n pattern: {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n predicate: namedNode(DCT_MODIFIED),\n },\n options: { order: ['subject'], limit: 100 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'limit'],\n },\n {\n name: 'load webid profile',\n resource: 'profile',\n purpose: 'WebID profile lookup must stay graph-scoped for profile/card reads',\n minScale: 'medium',\n query: {\n pattern: {\n subject: namedNode('https://pod.example/alice/profile/card#me'),\n predicate: namedNode(RDF_TYPE),\n object: namedNode(FOAF_PERSON),\n graph: namedNode('https://pod.example/alice/profile/card'),\n },\n },\n expectedPlan: ['graph-scope', 'type-filter'],\n },\n {\n name: 'profile public read acl',\n resource: 'acl',\n purpose: 'WebACL profile/card public read authorization lookup stays on graph + predicate/object filters',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(`${ACL}mode`),\n object: namedNode(`${ACL}Read`),\n graph: namedNode('https://pod.example/alice/profile/card.acl'),\n },\n options: { order: ['subject'], limit: 20 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'profile public read acr',\n resource: 'acr',\n purpose: 'ACP profile access-control relation lookup stays graph-scoped when cloud defaults to ACR',\n minScale: 'medium',\n query: {\n pattern: {\n subject: namedNode('https://pod.example/alice/profile/card'),\n predicate: namedNode(`${ACP}accessControl`),\n graph: namedNode('https://pod.example/alice/profile/.acr'),\n },\n options: { order: ['object'], limit: 20 },\n },\n expectedPlan: ['graph-scope', 'predicate-filter', 'limit'],\n },\n {\n name: 'list issues',\n resource: 'issue',\n purpose: 'shared issue resource list under the models issue base',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Issue`),\n graph: { $startsWith: 'https://pod.example/alice/.data/issues/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'pending approvals',\n resource: 'approval',\n purpose: 'approval request queue lookup by status under date-bucketed approval documents',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}status`),\n object: literal('pending'),\n graph: { $startsWith: 'https://pod.example/alice/.data/approvals/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'active autonomy grants',\n resource: 'grant',\n purpose: 'autonomy grant policy lookup by ODRL action under settings/autonomy',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(`${ODRL}action`),\n object: namedNode(`${UDFS}runTool`),\n graph: { $startsWith: 'https://pod.example/alice/settings/autonomy/grants/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'list inbox notifications',\n resource: 'inboxNotification',\n purpose: 'Solid inbox activity list uses graph-scoped type lookup rather than a pod-wide scan',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${AS}Activity`),\n graph: { $startsWith: 'https://pod.example/alice/inbox/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list providers',\n resource: 'aiProvider',\n purpose: 'AI provider settings list and provider/model relation baseline',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${XPOD_AI}Provider`),\n graph: { $startsWith: 'https://pod.example/alice/settings/providers/' },\n },\n },\n expectedPlan: ['graph-scope', 'type-filter'],\n },\n {\n name: 'models by provider',\n resource: 'aiModel',\n purpose: 'AI model lookup by provider relation',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${XPOD_AI}isProvidedBy`),\n object: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n },\n },\n expectedPlan: ['POSG'],\n },\n {\n name: 'credentials by provider',\n resource: 'credential',\n purpose: 'credential lookup by provider relation',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${XPOD_CREDENTIAL}provider`),\n object: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n },\n },\n expectedPlan: ['POSG'],\n },\n {\n name: 'list agents',\n resource: 'agent',\n purpose: 'agent identity list under the shared models agent resource base',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(FOAF_AGENT),\n graph: { $startsWith: 'https://pod.example/alice/.data/agents/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list contacts',\n resource: 'contact',\n purpose: 'contact index list under the shared models contact resource base',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(VCARD_INDIVIDUAL),\n graph: { $startsWith: 'https://pod.example/alice/.data/contacts/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list favorites',\n resource: 'favorite',\n purpose: 'favorite list over date-bucketed favorite documents',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(SCHEMA_CREATIVE_WORK),\n graph: { $startsWith: 'https://pod.example/alice/.data/favorites/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list sessions',\n resource: 'session',\n purpose: 'runtime session list under the shared models session resource base',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Session`),\n graph: { $startsWith: 'https://pod.example/alice/.data/sessions/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'active sessions',\n resource: 'session',\n purpose: 'session manager active-session lookup by lifecycle status',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}sessionStatus`),\n object: literal('active'),\n graph: { $startsWith: 'https://pod.example/alice/.data/sessions/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'audit entries by actor',\n resource: 'audit',\n purpose: 'audit trail lookup by WebID actor under date-bucketed audit documents',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}actor`),\n object: namedNode('https://pod.example/alice/profile/card#me'),\n graph: { $startsWith: 'https://pod.example/alice/.data/audits/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'list ai configs',\n resource: 'aiConfig',\n purpose: 'AI runtime singleton settings lookup under /settings/ai/config.ttl',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${XPOD_AI}AIConfig`),\n graph: namedNode('https://pod.example/alice/settings/ai/config.ttl'),\n },\n options: { order: ['subject'], limit: 20 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'list settings',\n resource: 'settings',\n purpose: 'settings resource list under /settings uses schema:PropertyValue with graph scoping',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(RDF_TYPE),\n object: namedNode(SCHEMA_PROPERTY_VALUE),\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'type-filter', 'limit'],\n },\n {\n name: 'sensitive settings',\n resource: 'settings',\n purpose: 'settings sensitivity flag uses the shared model predicate and stays exact-literal scoped',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}status`),\n object: literal('true', namedNode(XSD_BOOLEAN)),\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'active vector stores',\n resource: 'vectorStore',\n purpose: 'vector store registry lookup by active status',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${XPOD_AI}status`),\n object: literal('active'),\n graph: namedNode('https://pod.example/alice/settings/ai/vector-stores.ttl'),\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'indexed files by status',\n resource: 'indexedFile',\n purpose: 'indexed-file registry lookup by indexing status',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${XPOD_AI}status`),\n object: literal('indexed'),\n graph: namedNode('https://pod.example/alice/settings/ai/indexed-files.ttl'),\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'running agent statuses',\n resource: 'agentStatus',\n purpose: 'agent runtime status lookup by running state',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${XPOD_AI}status`),\n object: literal('running'),\n graph: namedNode('https://pod.example/alice/settings/ai/agent-status.ttl'),\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'oauth credentials expiring',\n resource: 'credential',\n purpose: 'OAuth credential rotation can find active tokens nearing expiry from the shared credential model',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${XPOD_CREDENTIAL}oauthExpiresAt`),\n object: { $lte: literal('2026-05-19T00:00:00.000Z') },\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n },\n options: { order: ['object'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-range-filter', 'order', 'limit'],\n },\n {\n name: 'reply messages',\n resource: 'message',\n purpose: 'message reply chains use the semantic replyTo relation rather than local message ids',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}replyTo`),\n object: namedNode('https://pod.example/alice/.data/chat/default/2026/05/18/messages.ttl#msg_1'),\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n {\n name: 'routed messages by target agent',\n resource: 'message',\n purpose: 'multi-agent routing can locate messages assigned to an agent without scanning message content',\n minScale: 'small',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}routeTargetAgentId`),\n object: literal('secretary'),\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n },\n options: { order: ['subject'], limit: 50 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-filter', 'limit'],\n },\n];\n\nexport const rdfModelsQueryBenchmarkCases: readonly RdfModelQueryBenchmarkCase[] = [\n {\n name: 'latest message by thread query',\n resource: 'message',\n purpose: 'date-bucketed message timeline keeps ORDER BY/LIMIT inside SQL self-join',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: namedNode('https://pod.example/alice/.data/chat/default/index.ttl#thread_1'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n ],\n select: ['message', 'createdAt'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'desc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'thread message keyset page query',\n resource: 'message',\n purpose: 'date-bucketed message timeline keeps keyset cursor range, ordering, and pagination inside SQL self-join',\n minScale: 'small',\n minReturnedRows: 2,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: namedNode('https://pod.example/alice/.data/chat/default/index.ttl#thread_1'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n ],\n filters: [\n {\n variable: 'createdAt',\n operator: '$lt',\n value: literal('2026-05-18T01:04:03.000Z'),\n },\n ],\n select: ['message', 'createdAt'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'desc',\n },\n ],\n limit: 2,\n },\n expectedPlan: ['join-index', 'range-filter-pushdown', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'thread context window query',\n resource: 'message',\n purpose: 'agent context assembly keeps message type/thread/created/score star join and pagination inside SQL',\n minScale: 'small',\n minReturnedRows: 2,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}Message`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: namedNode('https://pod.example/alice/.data/chat/default/index.ttl#thread_1'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}score`),\n object: { variable: 'score' },\n },\n ],\n filters: [\n {\n variable: 'score',\n operator: '$termType',\n value: 'numeric',\n },\n ],\n select: ['message', 'createdAt', 'score'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'desc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'modeled thread message page query',\n resource: 'message',\n purpose: 'message pagination follows the models message.thread SIOC has_container relation',\n minScale: 'small',\n minReturnedRows: 2,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_CONTAINER),\n object: namedNode('https://pod.example/alice/.data/chat/default/index.ttl#thread_1'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}messageStatus`),\n object: literal('completed'),\n },\n ],\n select: ['message', 'createdAt'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'desc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'chat latest message hydration query',\n resource: 'chat',\n purpose: 'chat list hydration joins Chat latest-message pointer to message content and status',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n subject: { variable: 'chat' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}LongChat`),\n },\n {\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n subject: { variable: 'chat' },\n predicate: namedNode(`${UDFS}lastMessage`),\n object: { variable: 'message' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_CONTENT),\n object: { variable: 'content' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}messageStatus`),\n object: literal('completed'),\n },\n ],\n select: ['chat', 'message', 'content'],\n limit: 10,\n },\n expectedPlan: ['join-index', 'join-limit-pushdown'],\n },\n {\n name: 'thread chat hydration query',\n resource: 'thread',\n purpose: 'thread list joins the models thread.chat SIOC has_parent relation back to Chat metadata',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n subject: { variable: 'thread' },\n predicate: namedNode(SIOC_HAS_PARENT),\n object: { variable: 'chat' },\n },\n {\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n subject: { variable: 'thread' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('active'),\n },\n {\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n subject: { variable: 'chat' },\n predicate: namedNode(DCT_TITLE),\n object: { variable: 'title' },\n },\n ],\n select: ['thread', 'chat', 'title'],\n orderBy: [\n {\n variable: 'thread',\n direction: 'asc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'next queued run by workspace query',\n resource: 'run',\n purpose: 'run state center scheduler query keeps status/workspace/date joins in SQL before LIMIT',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('queued'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}workspace`),\n object: namedNode('file://macbook.local/Users/alice/project/'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n ],\n select: ['run', 'createdAt'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'asc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'run steps by run query',\n resource: 'runStep',\n purpose: 'one-to-many run-step lookup keeps type and run relation in SQL self-join',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/2026/05/' },\n subject: { variable: 'step' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}RunStep`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/2026/05/' },\n subject: { variable: 'step' },\n predicate: namedNode(`${UDFS}run`),\n object: namedNode('https://pod.example/alice/.data/task/default/2026/05/18/runs.ttl#run_1'),\n },\n ],\n select: ['step'],\n orderBy: [\n {\n variable: 'step',\n direction: 'asc',\n },\n ],\n limit: 50,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'task run execution detail query',\n resource: 'run',\n purpose: 'task detail hydration joins Task, Run, Thread, and RunStep facts without falling back to per-resource scans',\n minScale: 'small',\n minReturnedRows: 2,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n subject: { variable: 'task' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Task`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Run`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}task`),\n object: { variable: 'task' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}inThread`),\n object: { variable: 'thread' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/2026/05/' },\n subject: { variable: 'step' },\n predicate: namedNode(`${UDFS}run`),\n object: { variable: 'run' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/2026/05/' },\n subject: { variable: 'step' },\n predicate: namedNode(`${UDFS}status`),\n object: { variable: 'stepType' },\n },\n ],\n select: ['task', 'run', 'thread', 'step', 'stepType'],\n orderBy: [\n {\n variable: 'step',\n direction: 'asc',\n },\n ],\n limit: 10,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'task materialization active due query',\n resource: 'schedule',\n purpose: 'task scheduler materialization keeps active status and due-time filter in SQL self-join',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'schedule' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Schedule`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'schedule' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('active'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'schedule' },\n predicate: namedNode(`${UDFS}nextRunAt`),\n object: { variable: 'nextRunAt' },\n },\n ],\n filters: [\n {\n variable: 'nextRunAt',\n operator: '$lte',\n value: literal('2026-05-18T01:30:00.000Z'),\n },\n ],\n select: ['schedule', 'nextRunAt'],\n orderBy: [\n {\n variable: 'nextRunAt',\n direction: 'asc',\n },\n ],\n limit: 100,\n },\n expectedPlan: ['join-index', 'range-filter-pushdown', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'scheduled task trigger query',\n resource: 'task',\n purpose: 'task scheduler joins trigger kind, active status, workspace, and nextRunAt from Task facts',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n subject: { variable: 'task' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Task`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n subject: { variable: 'task' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('active'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n subject: { variable: 'task' },\n predicate: namedNode(`${UDFS}triggerKind`),\n object: literal('cron'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n subject: { variable: 'task' },\n predicate: namedNode(`${UDFS}workspace`),\n object: namedNode(WORKSPACE),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n subject: { variable: 'task' },\n predicate: namedNode(`${UDFS}nextRunAt`),\n object: { variable: 'nextRunAt' },\n },\n ],\n filters: [\n {\n variable: 'nextRunAt',\n operator: '$lte',\n value: literal('2026-05-18T01:30:00.000Z'),\n },\n ],\n select: ['task', 'nextRunAt'],\n orderBy: [\n {\n variable: 'nextRunAt',\n direction: 'asc',\n },\n ],\n limit: 100,\n },\n expectedPlan: ['join-index', 'range-filter-pushdown', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'scheduled task trigger keyset continuation query',\n resource: 'task',\n purpose: 'task scheduler keyset continuation keeps cursor range, ordering, and pagination inside SQL self-join',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n subject: { variable: 'task' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Task`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n subject: { variable: 'task' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('active'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n subject: { variable: 'task' },\n predicate: namedNode(`${UDFS}workspace`),\n object: namedNode(WORKSPACE),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/' },\n subject: { variable: 'task' },\n predicate: namedNode(`${UDFS}nextRunAt`),\n object: { variable: 'nextRunAt' },\n },\n ],\n filters: [\n {\n variable: 'nextRunAt',\n operator: '$gt',\n value: literal('2026-05-18T00:30:00.000Z'),\n },\n {\n variable: 'nextRunAt',\n operator: '$lte',\n value: literal('2026-05-18T01:30:00.000Z'),\n },\n ],\n select: ['task', 'nextRunAt'],\n orderBy: [\n {\n variable: 'nextRunAt',\n direction: 'asc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['join-index', 'range-filter-pushdown', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'leased running run query',\n resource: 'run',\n purpose: 'run recovery joins running status with worker lease and heartbeat metadata',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('running'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}leaseOwner`),\n object: literal('worker-1'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}leaseExpiresAt`),\n object: { variable: 'leaseExpiresAt' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}heartbeatAt`),\n object: { variable: 'heartbeatAt' },\n },\n ],\n select: ['run', 'leaseExpiresAt', 'heartbeatAt'],\n orderBy: [\n {\n variable: 'heartbeatAt',\n direction: 'asc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'provider model credential join query',\n resource: 'aiProvider',\n purpose: 'provider/model/credential relation join can stay on the PostgreSQL RDF-3X join path',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'model' },\n predicate: namedNode(`${XPOD_AI}isProvidedBy`),\n object: { variable: 'provider' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}provider`),\n object: { variable: 'provider' },\n },\n ],\n select: ['model', 'credential'],\n },\n expectedPlan: ['join-index'],\n },\n {\n name: 'provider model credential VALUES join query',\n resource: 'aiProvider',\n purpose: 'VALUES-constrained provider/model/credential relation join can stay on the RDF-3X values join path',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'model' },\n predicate: namedNode(`${XPOD_AI}isProvidedBy`),\n object: { variable: 'provider' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}provider`),\n object: { variable: 'provider' },\n },\n ],\n values: [\n {\n variables: ['provider'],\n rows: [\n {\n provider: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n },\n ],\n },\n ],\n select: ['model', 'credential'],\n },\n expectedPlan: ['join-index', 'values-join-pushdown'],\n },\n {\n name: 'provider model credential ordered join query',\n resource: 'aiProvider',\n purpose: 'PostgreSQL RDF-3X joins keep hidden ordering variables for paginated settings lists',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'model' },\n predicate: namedNode(`${XPOD_AI}isProvidedBy`),\n object: { variable: 'provider' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}provider`),\n object: { variable: 'provider' },\n },\n ],\n select: ['model', 'credential'],\n orderBy: [\n {\n variable: 'provider',\n direction: 'asc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'ai credential selection query',\n resource: 'credential',\n purpose: 'shared models credential selection joins active AI credentials with provider default model metadata',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'provider' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${XPOD_AI}Provider`),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'provider' },\n predicate: namedNode(`${XPOD_AI}defaultModel`),\n object: { variable: 'model' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'model' },\n predicate: namedNode(`${XPOD_AI}isProvidedBy`),\n object: { variable: 'provider' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'model' },\n predicate: namedNode(`${XPOD_AI}status`),\n object: literal('active'),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}provider`),\n object: { variable: 'provider' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}service`),\n object: literal('ai'),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}status`),\n object: literal('active'),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}isDefault`),\n object: literal('true', namedNode(XSD_BOOLEAN)),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}apiKey`),\n object: { variable: 'apiKey' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}failCount`),\n object: { variable: 'failCount' },\n },\n ],\n select: ['provider', 'model', 'credential', 'apiKey', 'failCount'],\n orderBy: [\n {\n variable: 'failCount',\n direction: 'asc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'provider model credential count query',\n resource: 'aiProvider',\n purpose: 'count aggregate can stay inside the PostgreSQL RDF-3X count path',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'model' },\n predicate: namedNode(`${XPOD_AI}isProvidedBy`),\n object: { variable: 'provider' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}provider`),\n object: { variable: 'provider' },\n },\n ],\n aggregates: [\n {\n type: 'count',\n as: 'credentialCount',\n variable: 'credential',\n },\n {\n type: 'count',\n as: 'providerCount',\n variable: 'provider',\n distinct: true,\n },\n ],\n select: ['credentialCount', 'providerCount'],\n },\n expectedPlan: ['join-count-index'],\n },\n {\n name: 'provider credential grouped count query',\n resource: 'aiProvider',\n purpose: 'grouped count aggregate can stay inside the PostgreSQL RDF-3X group count path',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'model' },\n predicate: namedNode(`${XPOD_AI}isProvidedBy`),\n object: { variable: 'provider' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}provider`),\n object: { variable: 'provider' },\n },\n ],\n groupBy: ['provider'],\n aggregates: [\n {\n type: 'count',\n as: 'credentialCount',\n variable: 'credential',\n },\n ],\n having: [\n {\n variable: 'credentialCount',\n operator: '$gt',\n value: literal('0', namedNode('http://www.w3.org/2001/XMLSchema#integer')),\n },\n ],\n select: ['provider', 'credentialCount'],\n orderBy: [\n {\n variable: 'credentialCount',\n direction: 'desc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['group-count-index', 'having-pushdown', 'order', 'limit'],\n },\n {\n name: 'provider credential single-pattern grouped count query',\n resource: 'credential',\n purpose: 'single-pattern exact graph grouped count aggregate can stay inside the PostgreSQL RDF-3X group count path',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}provider`),\n object: { variable: 'provider' },\n },\n ],\n groupBy: ['provider'],\n aggregates: [\n {\n type: 'count',\n as: 'credentialCount',\n variable: 'credential',\n },\n ],\n having: [\n {\n variable: 'credentialCount',\n operator: '$gt',\n value: literal('0', namedNode('http://www.w3.org/2001/XMLSchema#integer')),\n },\n ],\n select: ['provider', 'credentialCount'],\n orderBy: [\n {\n variable: 'credentialCount',\n direction: 'desc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['group-count-index', 'having-pushdown', 'order', 'limit'],\n },\n {\n name: 'provider credential fail count aggregate query',\n resource: 'aiProvider',\n purpose: 'small grouped numeric aggregate over credential failCount can cut over from RDF-3X to facts by cost',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'model' },\n predicate: namedNode(`${XPOD_AI}isProvidedBy`),\n object: { variable: 'provider' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}provider`),\n object: { variable: 'provider' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}failCount`),\n object: { variable: 'failCount' },\n },\n ],\n groupBy: ['provider'],\n aggregates: [\n {\n type: 'count',\n as: 'credentialCount',\n variable: 'credential',\n },\n {\n type: 'sum',\n as: 'failCountTotal',\n variable: 'failCount',\n },\n ],\n select: ['provider', 'credentialCount', 'failCountTotal'],\n },\n expectedPlan: ['numeric-aggregate'],\n },\n {\n name: 'oauth credential expiry query',\n resource: 'credential',\n purpose: 'credential refresh jobs join service/status/token expiry fields without scanning non-OAuth credentials',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}service`),\n object: literal('github'),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}status`),\n object: literal('active'),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/credentials.ttl'),\n subject: { variable: 'credential' },\n predicate: namedNode(`${XPOD_CREDENTIAL}oauthExpiresAt`),\n object: { variable: 'expiresAt' },\n },\n ],\n filters: [\n {\n variable: 'expiresAt',\n operator: '$lte',\n value: literal('2026-05-19T00:00:00.000Z'),\n },\n ],\n select: ['credential', 'expiresAt'],\n orderBy: [\n {\n variable: 'expiresAt',\n direction: 'asc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'range-filter-pushdown', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'profile acl authorization join query',\n resource: 'acl',\n purpose: 'WebACL authorization lookup joins access target and mode inside the ACL graph',\n minScale: 'medium',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/profile/card.acl'),\n subject: { variable: 'authorization' },\n predicate: namedNode(`${ACL}accessTo`),\n object: namedNode('https://pod.example/alice/profile/card'),\n },\n {\n graph: namedNode('https://pod.example/alice/profile/card.acl'),\n subject: { variable: 'authorization' },\n predicate: namedNode(`${ACL}mode`),\n object: namedNode(`${ACL}Read`),\n },\n ],\n select: ['authorization'],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-limit-pushdown'],\n },\n {\n name: 'profile acr authorization join query',\n resource: 'acr',\n purpose: 'ACP access-control lookup joins resource, control node, target, and mode inside the ACR graph',\n minScale: 'medium',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/profile/.acr'),\n subject: namedNode('https://pod.example/alice/profile/card'),\n predicate: namedNode(`${ACP}accessControl`),\n object: { variable: 'accessControl' },\n },\n {\n graph: namedNode('https://pod.example/alice/profile/.acr'),\n subject: { variable: 'accessControl' },\n predicate: namedNode(`${ACP}apply`),\n object: namedNode('https://pod.example/alice/profile/card'),\n },\n {\n graph: namedNode('https://pod.example/alice/profile/.acr'),\n subject: { variable: 'accessControl' },\n predicate: namedNode(`${ACP}allow`),\n object: namedNode(`${ACP}Read`),\n },\n ],\n select: ['accessControl'],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-limit-pushdown'],\n },\n {\n name: 'profile inbox activity join query',\n resource: 'inboxNotification',\n purpose: 'WebID inbox lookup joins profile inbox relation with ActivityStreams inbox notification facts',\n minScale: 'medium',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/profile/card'),\n subject: namedNode('https://pod.example/alice/profile/card#me'),\n predicate: namedNode(LDP_INBOX),\n object: { variable: 'inbox' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/inbox/' },\n subject: { variable: 'notification' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${AS}Activity`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/inbox/' },\n subject: { variable: 'notification' },\n predicate: namedNode(`${AS}actor`),\n object: namedNode('https://pod.example/alice/profile/card#me'),\n },\n ],\n select: ['notification', 'inbox'],\n orderBy: [{ variable: 'notification' }],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'approval grant action match query',\n resource: 'approval',\n purpose: 'approval queue joins pending requests to matching autonomy grants by target workspace and action',\n minScale: 'medium',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/approvals/' },\n subject: { variable: 'approval' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}ApprovalRequest`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/approvals/' },\n subject: { variable: 'approval' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('pending'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/approvals/' },\n subject: { variable: 'approval' },\n predicate: namedNode(`${ODRL}target`),\n object: { variable: 'workspace' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/approvals/' },\n subject: { variable: 'approval' },\n predicate: namedNode(`${ODRL}action`),\n object: { variable: 'action' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/autonomy/grants/' },\n subject: { variable: 'grant' },\n predicate: namedNode(`${ODRL}target`),\n object: { variable: 'workspace' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/autonomy/grants/' },\n subject: { variable: 'grant' },\n predicate: namedNode(`${ODRL}action`),\n object: { variable: 'action' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/autonomy/grants/' },\n subject: { variable: 'grant' },\n predicate: namedNode(`${UDFS}effect`),\n object: literal('allow'),\n },\n ],\n select: ['approval', 'grant', 'workspace', 'action'],\n orderBy: [\n {\n variable: 'approval',\n direction: 'asc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'favorite target chat join query',\n resource: 'favorite',\n purpose: 'favorite list joins model favorite target URI back to the chat resource for display hydration',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/favorites/' },\n subject: { variable: 'favorite' },\n predicate: namedNode(`${UDFS}favoriteTarget`),\n object: { variable: 'chat' },\n },\n {\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n subject: { variable: 'chat' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}LongChat`),\n },\n ],\n select: ['favorite', 'chat'],\n orderBy: [{ variable: 'favorite' }],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'contact entity profile join query',\n resource: 'contact',\n purpose: 'contact list joins vCard contact records to their represented entity URI',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/contacts/' },\n subject: { variable: 'contact' },\n predicate: namedNode(FOAF_PRIMARY_TOPIC),\n object: { variable: 'entity' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/agents/' },\n subject: { variable: 'entity' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(FOAF_AGENT),\n },\n ],\n select: ['contact', 'entity'],\n orderBy: [{ variable: 'contact' }],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'settings owner category query',\n resource: 'settings',\n purpose: 'settings screens join owner/category/key/value fields under /settings without a full Pod scan',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n subject: { variable: 'setting' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(SCHEMA_PROPERTY_VALUE),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n subject: { variable: 'setting' },\n predicate: namedNode(DCT_CREATOR),\n object: namedNode('https://pod.example/alice/profile/card#me'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n subject: { variable: 'setting' },\n predicate: namedNode(DCT_TYPE),\n object: literal('ai'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n subject: { variable: 'setting' },\n predicate: namedNode(`${UDFS}settingKey`),\n object: { variable: 'key' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n subject: { variable: 'setting' },\n predicate: namedNode(`${UDFS}settingValue`),\n object: { variable: 'value' },\n },\n ],\n select: ['setting', 'key', 'value'],\n orderBy: [\n {\n variable: 'key',\n direction: 'asc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'settings owner category keyset query',\n resource: 'settings',\n purpose: 'settings screens keep key cursor, ordering, and pagination inside SQL self-join',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n subject: { variable: 'setting' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(SCHEMA_PROPERTY_VALUE),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n subject: { variable: 'setting' },\n predicate: namedNode(DCT_CREATOR),\n object: namedNode('https://pod.example/alice/profile/card#me'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n subject: { variable: 'setting' },\n predicate: namedNode(DCT_TYPE),\n object: literal('ai'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n subject: { variable: 'setting' },\n predicate: namedNode(`${UDFS}settingKey`),\n object: { variable: 'key' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/' },\n subject: { variable: 'setting' },\n predicate: namedNode(`${UDFS}settingValue`),\n object: { variable: 'value' },\n },\n ],\n filters: [\n {\n variable: 'key',\n operator: '$gt',\n value: literal('ai.defaultAssistant'),\n },\n ],\n select: ['setting', 'key', 'value'],\n orderBy: [\n {\n variable: 'key',\n direction: 'asc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'range-filter-pushdown', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'active session thread hydration query',\n resource: 'session',\n purpose: 'session manager hydrates active session, chat, thread, and token usage without pod-wide scans',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/sessions/' },\n subject: { variable: 'session' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}Session`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/sessions/' },\n subject: { variable: 'session' },\n predicate: namedNode(`${UDFS}actor`),\n object: namedNode('https://pod.example/alice/profile/card#me'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/sessions/' },\n subject: { variable: 'session' },\n predicate: namedNode(`${UDFS}sessionStatus`),\n object: literal('active'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/sessions/' },\n subject: { variable: 'session' },\n predicate: namedNode(`${UDFS}conversation`),\n object: { variable: 'chat' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/sessions/' },\n subject: { variable: 'session' },\n predicate: namedNode(`${UDFS}inThread`),\n object: { variable: 'thread' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/sessions/' },\n subject: { variable: 'session' },\n predicate: namedNode(`${UDFS}tokenUsage`),\n object: { variable: 'tokenUsage' },\n },\n {\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n subject: { variable: 'chat' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}LongChat`),\n },\n {\n graph: namedNode('https://pod.example/alice/.data/chat/default/index.ttl'),\n subject: { variable: 'thread' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${SIOC}Thread`),\n },\n ],\n filters: [\n {\n variable: 'tokenUsage',\n operator: '$termType',\n value: 'numeric',\n },\n ],\n select: ['session', 'chat', 'thread', 'tokenUsage'],\n orderBy: [\n {\n variable: 'tokenUsage',\n direction: 'desc',\n },\n ],\n limit: 5,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'message reply chain query',\n resource: 'message',\n purpose: 'message detail views join replyTo and content facts across messages in the same date bucket',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'reply' },\n predicate: namedNode(`${UDFS}replyTo`),\n object: { variable: 'parent' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'reply' },\n predicate: namedNode(SIOC_CONTENT),\n object: { variable: 'replyContent' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'parent' },\n predicate: namedNode(SIOC_CONTENT),\n object: { variable: 'parentContent' },\n },\n ],\n select: ['reply', 'parent', 'replyContent', 'parentContent'],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-limit-pushdown'],\n },\n {\n name: 'routed message agent query',\n resource: 'message',\n purpose: 'multi-agent coordination joins routed messages to their agent/contact index',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}routeTargetAgentId`),\n object: literal('secretary'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}coordinationId`),\n object: { variable: 'coordination' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(FOAF_MAKER),\n object: { variable: 'maker' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/agents/' },\n subject: { variable: 'maker' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(FOAF_AGENT),\n },\n ],\n select: ['message', 'maker', 'coordination'],\n orderBy: [\n {\n variable: 'message',\n direction: 'asc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'audit approval policy trace query',\n resource: 'audit',\n purpose: 'audit timeline joins actor/session approval and grant policy relations for supervision views',\n minScale: 'medium',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/audits/' },\n subject: { variable: 'audit' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${UDFS}AuditEntry`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/audits/' },\n subject: { variable: 'audit' },\n predicate: namedNode(`${UDFS}actor`),\n object: namedNode('https://pod.example/alice/profile/card#me'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/audits/' },\n subject: { variable: 'audit' },\n predicate: namedNode(`${UDFS}session`),\n object: { variable: 'session' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/audits/' },\n subject: { variable: 'audit' },\n predicate: namedNode(`${UDFS}approval`),\n object: { variable: 'approval' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/audits/' },\n subject: { variable: 'audit' },\n predicate: namedNode(`${UDFS}policy`),\n object: { variable: 'grant' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/audits/' },\n subject: { variable: 'audit' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/approvals/' },\n subject: { variable: 'approval' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('pending'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/settings/autonomy/grants/' },\n subject: { variable: 'grant' },\n predicate: namedNode(`${UDFS}effect`),\n object: literal('allow'),\n },\n ],\n select: ['audit', 'session', 'approval', 'grant', 'createdAt'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'desc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'ai config embedding model query',\n resource: 'aiConfig',\n purpose: 'AI runtime config joins embedding model selection back to provider model metadata',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/ai/config.ttl'),\n subject: { variable: 'config' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${XPOD_AI}AIConfig`),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/ai/config.ttl'),\n subject: { variable: 'config' },\n predicate: namedNode(`${XPOD_AI}migrationStatus`),\n object: literal('ready'),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/ai/config.ttl'),\n subject: { variable: 'config' },\n predicate: namedNode(`${XPOD_AI}embeddingModel`),\n object: { variable: 'model' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'model' },\n predicate: namedNode(`${XPOD_AI}isProvidedBy`),\n object: { variable: 'provider' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/providers/anthropic.ttl'),\n subject: { variable: 'model' },\n predicate: namedNode(`${XPOD_AI}status`),\n object: literal('active'),\n },\n ],\n select: ['config', 'model', 'provider'],\n limit: 10,\n },\n expectedPlan: ['join-index', 'join-limit-pushdown'],\n },\n {\n name: 'vector indexed file store query',\n resource: 'indexedFile',\n purpose: 'vector store settings join indexed files by chunking strategy and usage metadata',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode('https://pod.example/alice/settings/ai/vector-stores.ttl'),\n subject: { variable: 'store' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${XPOD_AI}VectorStore`),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/ai/vector-stores.ttl'),\n subject: { variable: 'store' },\n predicate: namedNode(`${XPOD_AI}status`),\n object: literal('active'),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/ai/vector-stores.ttl'),\n subject: { variable: 'store' },\n predicate: namedNode(`${XPOD_AI}chunkingStrategy`),\n object: { variable: 'strategy' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/ai/indexed-files.ttl'),\n subject: { variable: 'file' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${XPOD_AI}IndexedFile`),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/ai/indexed-files.ttl'),\n subject: { variable: 'file' },\n predicate: namedNode(`${XPOD_AI}status`),\n object: literal('indexed'),\n },\n {\n graph: namedNode('https://pod.example/alice/settings/ai/indexed-files.ttl'),\n subject: { variable: 'file' },\n predicate: namedNode(`${XPOD_AI}chunkingStrategy`),\n object: { variable: 'strategy' },\n },\n {\n graph: namedNode('https://pod.example/alice/settings/ai/indexed-files.ttl'),\n subject: { variable: 'file' },\n predicate: namedNode(`${XPOD_AI}usageBytes`),\n object: { variable: 'usageBytes' },\n },\n ],\n filters: [\n {\n variable: 'usageBytes',\n operator: '$termType',\n value: 'numeric',\n },\n ],\n select: ['store', 'file', 'strategy', 'usageBytes'],\n orderBy: [\n {\n variable: 'usageBytes',\n direction: 'desc',\n },\n ],\n limit: 20,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'message count by thread with having',\n resource: 'message',\n purpose: 'grouped message count uses SQL GROUP BY/HAVING before pagination',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n ],\n groupBy: ['thread'],\n aggregate: {\n type: 'count',\n as: 'count',\n variable: 'message',\n },\n having: [\n {\n variable: 'count',\n operator: '$gt',\n value: literal('2', namedNode('http://www.w3.org/2001/XMLSchema#integer')),\n },\n ],\n select: ['thread', 'count'],\n orderBy: [\n {\n variable: 'count',\n direction: 'desc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['group-count-index', 'having-pushdown', 'order', 'limit'],\n },\n {\n name: 'queued run priority numeric aggregate',\n resource: 'run',\n purpose: 'non-grouped numeric run priority aggregate stays inside SQL/RDF-3X aggregate execution',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('queued'),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/task/default/' },\n subject: { variable: 'run' },\n predicate: namedNode(`${UDFS}priority`),\n object: { variable: 'priority' },\n },\n ],\n filters: [\n {\n variable: 'priority',\n operator: '$termType',\n value: 'numeric',\n },\n ],\n aggregates: [\n {\n type: 'sum',\n as: 'priorityTotal',\n variable: 'priority',\n },\n {\n type: 'avg',\n as: 'priorityAvg',\n variable: 'priority',\n },\n {\n type: 'max',\n as: 'priorityMax',\n variable: 'priority',\n },\n ],\n select: ['priorityTotal', 'priorityAvg', 'priorityMax'],\n },\n expectedPlan: ['join-aggregate-index'],\n },\n {\n name: 'message score by thread numeric aggregate',\n resource: 'message',\n purpose: 'group-prefix grouped numeric message score aggregate stays on RDF-3X instead of row-materializing facts',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}score`),\n object: { variable: 'score' },\n },\n ],\n filters: [\n {\n variable: 'score',\n operator: '$termType',\n value: 'numeric',\n },\n ],\n groupBy: ['thread'],\n aggregates: [\n {\n type: 'count',\n as: 'count',\n variable: 'message',\n },\n {\n type: 'sum',\n as: 'scoreTotal',\n variable: 'score',\n },\n {\n type: 'avg',\n as: 'scoreAvg',\n variable: 'score',\n },\n ],\n having: [\n {\n variable: 'scoreTotal',\n operator: '$gt',\n value: literal('4', namedNode('http://www.w3.org/2001/XMLSchema#integer')),\n },\n ],\n select: ['thread', 'count', 'scoreTotal', 'scoreAvg'],\n orderBy: [\n {\n variable: 'scoreTotal',\n direction: 'desc',\n },\n ],\n limit: 1,\n },\n expectedPlan: ['numeric-aggregate'],\n },\n {\n name: 'message join count distinct',\n resource: 'message',\n purpose: 'message/thread BGP aggregate count stays on the PostgreSQL RDF-3X count path',\n minScale: 'small',\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}Message`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n ],\n aggregates: [\n {\n type: 'count',\n as: 'messageCount',\n variable: 'message',\n },\n {\n type: 'count',\n as: 'threadCount',\n variable: 'thread',\n distinct: true,\n },\n ],\n },\n expectedPlan: ['join-count-index'],\n },\n];\n\nexport const rdfModelsSearchFusionQueryBenchmarkCases: readonly RdfModelQueryBenchmarkCase[] = [\n {\n name: 'agent context text vector fusion query',\n resource: 'message',\n purpose: 'agent context search intersects text chunks, vector chunks, and structured message/thread/workspace RDF facts, then reranks by a fused score',\n minScale: 'small',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}Message`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}workspace`),\n object: namedNode(WORKSPACE),\n },\n ],\n textSearch: [\n {\n query: 'runtime approvals',\n scope: {\n workspace: WORKSPACE,\n sourcePrefix: `${DATA}/chat/default/`,\n accessBasePath: `${DATA}/chat/default/`,\n },\n source: 'message',\n content: 'textContent',\n score: 'textScore',\n },\n ],\n vectorSearch: [\n {\n embedding: [0.95, 0.2, 0.05],\n metric: 'cosine',\n vectorModel: RDF_MODELS_SEARCH_VECTOR_MODEL,\n scope: {\n workspace: WORKSPACE,\n sourcePrefix: `${DATA}/chat/default/`,\n accessBasePath: `${DATA}/chat/default/`,\n },\n source: 'message',\n content: 'vectorContent',\n score: 'vectorScore',\n distance: 'vectorDistance',\n model: 'embeddingModel',\n },\n ],\n binds: [\n {\n variable: 'fusionScore',\n expression: {\n type: 'add',\n expressions: [\n {\n type: 'multiply',\n expressions: [\n { type: 'numericValue', expression: { type: 'variable', variable: 'textScore' } },\n { type: 'term', term: literal('0.55', namedNode(XSD_DECIMAL)) },\n ],\n },\n {\n type: 'multiply',\n expressions: [\n { type: 'numericValue', expression: { type: 'variable', variable: 'vectorScore' } },\n { type: 'term', term: literal('0.45', namedNode(XSD_DECIMAL)) },\n ],\n },\n ],\n },\n },\n ],\n select: ['message', 'thread', 'textContent', 'textScore', 'vectorContent', 'vectorScore', 'vectorDistance', 'fusionScore'],\n orderBy: [\n { variable: 'fusionScore', direction: 'desc' },\n { variable: 'message' },\n ],\n limit: 10,\n },\n expectedPlan: ['text-search-source', 'vector-search-source', 'search-rdf-join', 'planner-source-estimates', 'fusion-rank-inputs', 'fusion-rank-weights', 'fusion-rank-tiebreaker', 'fusion-hard-filters-before-rank', 'search-score-rerank'],\n },\n {\n name: 'broad agent context text vector fusion query',\n resource: 'message',\n purpose: 'broad agent context search keeps text/vector/RDF/path/ACL candidate sources visible when many chunks match before final top-k',\n minScale: 'small',\n minReturnedRows: 10,\n query: {\n patterns: [\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}Message`),\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n {\n graph: { $startsWith: 'https://pod.example/alice/.data/chat/default/2026/05/' },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}workspace`),\n object: namedNode(WORKSPACE),\n },\n ],\n textSearch: [\n {\n query: 'candidate retrieval',\n scope: {\n workspace: WORKSPACE,\n sourcePrefix: `${DATA}/chat/default/`,\n accessBasePath: `${DATA}/chat/default/`,\n },\n source: 'message',\n content: 'textContent',\n score: 'textScore',\n },\n ],\n vectorSearch: [\n {\n embedding: [0.82, 0.48, 0.12],\n metric: 'cosine',\n vectorModel: RDF_MODELS_SEARCH_VECTOR_MODEL,\n scope: {\n workspace: WORKSPACE,\n sourcePrefix: `${DATA}/chat/default/`,\n accessBasePath: `${DATA}/chat/default/`,\n },\n source: 'message',\n content: 'vectorContent',\n score: 'vectorScore',\n distance: 'vectorDistance',\n model: 'embeddingModel',\n },\n ],\n binds: [\n {\n variable: 'fusionScore',\n expression: {\n type: 'add',\n expressions: [\n {\n type: 'multiply',\n expressions: [\n { type: 'numericValue', expression: { type: 'variable', variable: 'textScore' } },\n { type: 'term', term: literal('0.55', namedNode(XSD_DECIMAL)) },\n ],\n },\n {\n type: 'multiply',\n expressions: [\n { type: 'numericValue', expression: { type: 'variable', variable: 'vectorScore' } },\n { type: 'term', term: literal('0.45', namedNode(XSD_DECIMAL)) },\n ],\n },\n ],\n },\n },\n ],\n select: ['message', 'thread', 'textContent', 'textScore', 'vectorContent', 'vectorScore', 'vectorDistance', 'fusionScore'],\n orderBy: [\n { variable: 'fusionScore', direction: 'desc' },\n { variable: 'message' },\n ],\n limit: 10,\n },\n expectedPlan: ['text-search-source', 'vector-search-source', 'search-rdf-join', 'planner-source-estimates', 'fusion-rank-inputs', 'fusion-rank-weights', 'fusion-rank-tiebreaker', 'fusion-hard-filters-before-rank', 'search-score-rerank'],\n },\n];\n\nexport const rdfModelsPostgresMaterializedQueryBenchmarkCases: readonly RdfModelQueryBenchmarkCase[] = [\n postgresMaterializedQueryBenchmarkCase('latest message by thread query', {\n name: 'materialized latest message by thread query',\n purpose: 'high-frequency chat timeline view reuses the materialized latest-message result after warmup',\n materialized: {\n key: 'models/chat/default/thread_1/latest-message',\n version: '2026-05-18',\n },\n }),\n postgresMaterializedQueryBenchmarkCase('thread context window query', {\n name: 'materialized thread context window query',\n purpose: 'agent context assembly reuses a materialized thread window after warmup',\n materialized: {\n key: 'models/chat/default/thread_1/context-window',\n version: '2026-05-18',\n },\n }),\n postgresMaterializedQueryBenchmarkCase('run steps by run query', {\n name: 'materialized run steps by run query',\n purpose: 'run detail views reuse the materialized run-step list after warmup',\n materialized: {\n key: 'models/task/default/run_1/steps',\n version: '2026-05-18',\n },\n }),\n postgresMaterializedQueryBenchmarkCase('task materialization active due query', {\n name: 'materialized task materialization active due query',\n purpose: 'scheduler due-task polling reuses a cutoff-scoped materialized active schedule view after warmup',\n materialized: {\n key: 'models/task/default/due-schedules/2026-05-18T01:30:00.000Z',\n version: 'cutoff:2026-05-18T01:30:00.000Z',\n },\n }),\n postgresMaterializedQueryBenchmarkCase('provider model credential join query', {\n name: 'materialized provider model credential join query',\n purpose: 'settings/provider startup views reuse a materialized provider-model-credential relation after warmup',\n materialized: {\n key: 'models/settings/providers/anthropic/model-credentials',\n version: 'v1',\n },\n }),\n postgresMaterializedQueryBenchmarkCase('settings owner category keyset query', {\n name: 'materialized settings owner category keyset query',\n purpose: 'settings list drill-down reuses owner/category/keyset pagination after warmup',\n materialized: {\n key: 'models/settings/owner-category/keyset-ai',\n version: 'cursor:ai.defaultAssistant',\n },\n }),\n postgresMaterializedQueryBenchmarkCase('active session thread hydration query', {\n name: 'materialized active session thread hydration query',\n purpose: 'agent session drill-down reuses active session/chat/thread hydration after warmup',\n materialized: {\n key: 'models/agent-context/active-session-thread-usage',\n version: 'v1',\n },\n }),\n postgresMaterializedQueryBenchmarkCase('ai config embedding model query', {\n name: 'materialized ai config embedding model query',\n purpose: 'AI settings drill-down reuses embedding model/provider hydration after warmup',\n materialized: {\n key: 'models/settings/ai/config/embedding-model',\n version: 'v1',\n },\n }),\n postgresMaterializedQueryBenchmarkCase('vector indexed file store query', {\n name: 'materialized vector indexed file store query',\n purpose: 'vector store drill-down reuses indexed-file/store metadata join after warmup',\n materialized: {\n key: 'models/settings/ai/vector-store/indexed-files',\n version: 'v1',\n },\n }),\n];\n\nexport const rdfModelsPostgresQueryBenchmarkCases: readonly RdfModelQueryBenchmarkCase[] = [\n ...rdfModelsQueryBenchmarkCases,\n ...rdfModelsPostgresMaterializedQueryBenchmarkCases,\n];\n\nfunction postgresMaterializedQueryBenchmarkCase(\n baseName: string,\n options: {\n name: string;\n purpose: string;\n materialized: NonNullable<RdfQuery['cache']>['materialized'];\n },\n): RdfModelQueryBenchmarkCase {\n const base = rdfModelsQueryBenchmarkCases.find((testCase) => testCase.name === baseName);\n if (!base) {\n throw new Error(`Unknown RDF models query benchmark case: ${baseName}`);\n }\n return {\n ...base,\n name: options.name,\n purpose: options.purpose,\n minReturnedRows: base.minReturnedRows ?? 1,\n benchmarkCache: 'preserve',\n minWarmupIterations: 1,\n query: {\n ...base.query,\n cache: {\n ...(base.query.cache ?? {}),\n materialized: options.materialized,\n },\n },\n expectedPlan: ['materialized-cache-hit', 'query-template-cache-hit', ...base.expectedPlan],\n };\n}\n\nexport const rdfModelsExtremeBenchmarkCases: readonly RdfModelBenchmarkCase[] = [\n {\n name: 'extreme month message score range scan',\n resource: 'message',\n purpose: 'large month graph-prefix numeric score scan stresses graph membership plus object range pushdown',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(`${UDFS}score`),\n object: { $gte: literal('50', namedNode(XSD_INTEGER)) },\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n },\n options: { order: ['subject'], limit: 500 },\n },\n expectedPlan: ['graph-scope', 'predicate-object-range-filter', 'order', 'limit'],\n },\n {\n name: 'extreme month message text scan',\n resource: 'message',\n purpose: 'large graph-prefix text scan validates that object text lookup reconnects through RDF subjects',\n minScale: 'medium',\n query: {\n pattern: {\n predicate: namedNode(SIOC_CONTENT),\n object: { $contains: 'synthetic searchable message' },\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n },\n options: { order: ['subject'], limit: 500 },\n },\n expectedPlan: ['text-index', 'rdf-subject-join', 'order', 'limit'],\n },\n];\n\nexport const rdfModelsExtremeQueryBenchmarkCases: readonly RdfModelQueryBenchmarkCase[] = [\n {\n name: 'extreme message eight-pattern star query',\n resource: 'message',\n purpose: '8-pattern subject-star BGP stresses deep custom-index joins before pagination',\n minScale: 'medium',\n minReturnedRows: 100,\n query: {\n patterns: [\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}Message`),\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(DCT_MODIFIED),\n object: { variable: 'modifiedAt' },\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}score`),\n object: { variable: 'score' },\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}rank`),\n object: { variable: 'rank' },\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('indexed'),\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}workspace`),\n object: namedNode(WORKSPACE),\n },\n ],\n select: ['message', 'thread', 'createdAt', 'score'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'desc',\n },\n ],\n limit: 100,\n },\n expectedPlan: ['join-index', 'subject-star-join', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'extreme message large VALUES thread query',\n resource: 'message',\n purpose: 'large VALUES-constrained fanout join checks native tuple-values pushdown against RDF-3X baseline',\n minScale: 'medium',\n minReturnedRows: 100,\n query: {\n patterns: [\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n ],\n values: [\n {\n variables: ['thread'],\n rows: syntheticThreadValueRows(32),\n },\n ],\n select: ['message', 'thread', 'createdAt'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'desc',\n },\n ],\n limit: 500,\n },\n expectedPlan: ['join-index', 'values-join-pushdown'],\n },\n {\n name: 'extreme message count distinct thread query',\n resource: 'message',\n purpose: 'large fanout COUNT plus COUNT DISTINCT tests the hard aggregate path where native numeric aggregate must not over-claim',\n minScale: 'medium',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}Message`),\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n ],\n aggregates: [\n {\n type: 'count',\n as: 'messageCount',\n variable: 'message',\n },\n {\n type: 'count',\n as: 'threadCount',\n variable: 'thread',\n distinct: true,\n },\n ],\n select: ['messageCount', 'threadCount'],\n },\n expectedPlan: ['join-count-index'],\n },\n {\n name: 'extreme message grouped count by thread query',\n resource: 'message',\n purpose: 'large fanout grouped count validates thread-level scheduler-style aggregation under HAVING/ORDER/LIMIT',\n minScale: 'medium',\n minReturnedRows: 10,\n query: {\n patterns: [\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n ],\n groupBy: ['thread'],\n aggregates: [\n {\n type: 'count',\n as: 'messageCount',\n variable: 'message',\n },\n ],\n having: [\n {\n variable: 'messageCount',\n operator: '$gt',\n value: literal('5', namedNode(XSD_INTEGER)),\n },\n ],\n select: ['thread', 'messageCount'],\n orderBy: [\n {\n variable: 'messageCount',\n direction: 'desc',\n },\n {\n variable: 'thread',\n direction: 'asc',\n },\n ],\n limit: 10,\n },\n expectedPlan: ['group-count-index', 'having-pushdown', 'order', 'limit'],\n },\n {\n name: 'extreme message grouped numeric aggregate by thread query',\n resource: 'message',\n purpose: 'large fanout grouped numeric aggregate is the primary pg-custom-index native aggregate proving ground',\n minScale: 'medium',\n minReturnedRows: 10,\n query: {\n patterns: [\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}score`),\n object: { variable: 'score' },\n },\n {\n graph: { $startsWith: `${DATA}/chat/default/2026/05/` },\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('indexed'),\n },\n ],\n filters: [\n {\n variable: 'score',\n operator: '$termType',\n value: 'numeric',\n },\n ],\n groupBy: ['thread'],\n aggregates: [\n {\n type: 'count',\n as: 'messageCount',\n variable: 'message',\n },\n {\n type: 'sum',\n as: 'scoreTotal',\n variable: 'score',\n },\n {\n type: 'avg',\n as: 'scoreAvg',\n variable: 'score',\n },\n {\n type: 'max',\n as: 'scoreMax',\n variable: 'score',\n },\n ],\n having: [\n {\n variable: 'scoreTotal',\n operator: '$gt',\n value: literal('100', namedNode(XSD_INTEGER)),\n },\n ],\n select: ['thread', 'messageCount', 'scoreTotal', 'scoreAvg', 'scoreMax'],\n orderBy: [\n {\n variable: 'scoreTotal',\n direction: 'desc',\n },\n {\n variable: 'thread',\n direction: 'asc',\n },\n ],\n limit: 10,\n },\n expectedPlan: ['group-aggregate-index', 'having-pushdown', 'order', 'limit'],\n },\n {\n name: 'extreme native exact graph eight-pattern join query',\n resource: 'message',\n purpose: 'high fanout exact-graph 8-pattern BGP is the custom-index native row-stream gate',\n minScale: 'medium',\n minReturnedRows: 200,\n query: {\n patterns: [\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}Message`),\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(DCT_MODIFIED),\n object: { variable: 'modifiedAt' },\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}score`),\n object: { variable: 'score' },\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}rank`),\n object: { variable: 'rank' },\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('indexed'),\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}workspace`),\n object: namedNode(WORKSPACE),\n },\n ],\n select: ['message', 'thread', 'createdAt', 'score'],\n limit: 256,\n },\n expectedPlan: ['join-index', 'join-limit-pushdown'],\n },\n {\n name: 'extreme native exact graph ordered-page query',\n resource: 'message',\n purpose: 'high fanout exact-graph ordered page checks native BGP row stream plus projected order pagination',\n minScale: 'medium',\n minReturnedRows: 100,\n query: {\n patterns: [\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('indexed'),\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n ],\n select: ['message', 'createdAt'],\n orderBy: [\n {\n variable: 'createdAt',\n direction: 'desc',\n },\n ],\n limit: 128,\n },\n expectedPlan: ['join-index', 'join-order-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'extreme native exact graph VALUES thread query',\n resource: 'message',\n purpose: 'high fanout exact-graph VALUES BGP checks native VALUES row scheduling',\n minScale: 'medium',\n minReturnedRows: 200,\n query: {\n patterns: [\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(DCT_CREATED),\n object: { variable: 'createdAt' },\n },\n ],\n values: [\n {\n variables: ['thread'],\n rows: syntheticThreadValueRows(32),\n },\n ],\n select: ['message', 'thread', 'createdAt'],\n limit: 512,\n },\n expectedPlan: ['join-index', 'values-join-pushdown', 'join-limit-pushdown'],\n },\n {\n name: 'extreme native exact graph count distinct thread query',\n resource: 'message',\n purpose: 'high fanout exact-graph COUNT and COUNT DISTINCT checks native BGP count',\n minScale: 'medium',\n minReturnedRows: 1,\n query: {\n patterns: [\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(RDF_TYPE),\n object: namedNode(`${MEETING}Message`),\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n ],\n aggregates: [\n {\n type: 'count',\n as: 'messageCount',\n variable: 'message',\n },\n {\n type: 'count',\n as: 'threadCount',\n variable: 'thread',\n distinct: true,\n },\n ],\n select: ['messageCount', 'threadCount'],\n },\n expectedPlan: ['join-count-index'],\n },\n {\n name: 'extreme native exact graph grouped count by thread query',\n resource: 'message',\n purpose: 'high fanout exact-graph grouped count checks native BGP group-count summary',\n minScale: 'medium',\n minReturnedRows: 10,\n query: {\n patterns: [\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n ],\n groupBy: ['thread'],\n aggregates: [\n {\n type: 'count',\n as: 'messageCount',\n variable: 'message',\n },\n ],\n having: [\n {\n variable: 'messageCount',\n operator: '$gt',\n value: literal('8', namedNode(XSD_INTEGER)),\n },\n ],\n select: ['thread', 'messageCount'],\n orderBy: [\n {\n variable: 'messageCount',\n direction: 'desc',\n },\n {\n variable: 'thread',\n direction: 'asc',\n },\n ],\n limit: 10,\n },\n expectedPlan: ['group-count-index', 'having-pushdown', 'order', 'limit'],\n },\n {\n name: 'extreme native exact graph grouped numeric aggregate by thread query',\n resource: 'message',\n purpose: 'high fanout exact-graph grouped numeric summary checks native BGP numeric aggregate',\n minScale: 'medium',\n minReturnedRows: 10,\n query: {\n patterns: [\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(SIOC_HAS_MEMBER),\n object: { variable: 'thread' },\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}score`),\n object: { variable: 'score' },\n },\n {\n graph: namedNode(NATIVE_STRESS_GRAPH),\n subject: { variable: 'message' },\n predicate: namedNode(`${UDFS}status`),\n object: literal('indexed'),\n },\n ],\n filters: [\n {\n variable: 'score',\n operator: '$termType',\n value: 'numeric',\n },\n ],\n groupBy: ['thread'],\n aggregates: [\n {\n type: 'count',\n as: 'messageCount',\n variable: 'message',\n },\n {\n type: 'sum',\n as: 'scoreTotal',\n variable: 'score',\n },\n {\n type: 'avg',\n as: 'scoreAvg',\n variable: 'score',\n },\n {\n type: 'max',\n as: 'scoreMax',\n variable: 'score',\n },\n ],\n having: [\n {\n variable: 'scoreTotal',\n operator: '$gt',\n value: literal('100', namedNode(XSD_INTEGER)),\n },\n ],\n select: ['thread', 'messageCount', 'scoreTotal', 'scoreAvg', 'scoreMax'],\n orderBy: [\n {\n variable: 'scoreTotal',\n direction: 'desc',\n },\n {\n variable: 'thread',\n direction: 'asc',\n },\n ],\n limit: 10,\n },\n expectedPlan: ['numeric-aggregate'],\n },\n];\n\nexport function rdfModelsBenchmarkCasesForProfile(profile: RdfBenchmarkCaseProfile): readonly RdfModelBenchmarkCase[] {\n switch (profile) {\n case 'default':\n return rdfModelsBenchmarkCases;\n case 'extreme':\n return rdfModelsExtremeBenchmarkCases;\n case 'fusion':\n return [];\n case 'all':\n return [...rdfModelsBenchmarkCases, ...rdfModelsExtremeBenchmarkCases];\n default: {\n const exhaustive: never = profile;\n return exhaustive;\n }\n }\n}\n\nexport function rdfModelsQueryBenchmarkCasesForProfile(profile: RdfBenchmarkCaseProfile): readonly RdfModelQueryBenchmarkCase[] {\n switch (profile) {\n case 'default':\n return rdfModelsQueryBenchmarkCases;\n case 'extreme':\n return rdfModelsExtremeQueryBenchmarkCases;\n case 'fusion':\n return rdfModelsSearchFusionQueryBenchmarkCases;\n case 'all':\n return [...rdfModelsQueryBenchmarkCases, ...rdfModelsExtremeQueryBenchmarkCases, ...rdfModelsSearchFusionQueryBenchmarkCases];\n default: {\n const exhaustive: never = profile;\n return exhaustive;\n }\n }\n}\n\nexport function rdfModelsPostgresQueryBenchmarkCasesForProfile(profile: RdfBenchmarkCaseProfile): readonly RdfModelQueryBenchmarkCase[] {\n switch (profile) {\n case 'default':\n return rdfModelsPostgresQueryBenchmarkCases;\n case 'extreme':\n return rdfModelsExtremeQueryBenchmarkCases;\n case 'fusion':\n return rdfModelsSearchFusionQueryBenchmarkCases;\n case 'all':\n return [...rdfModelsPostgresQueryBenchmarkCases, ...rdfModelsExtremeQueryBenchmarkCases, ...rdfModelsSearchFusionQueryBenchmarkCases];\n default: {\n const exhaustive: never = profile;\n return exhaustive;\n }\n }\n}\n\nexport function rdfModelsBenchmarkCaseNames(): string[] {\n return rdfModelsBenchmarkCases.map((testCase) => testCase.name);\n}\n\nexport function rdfModelsQueryBenchmarkCaseNames(): string[] {\n return rdfModelsQueryBenchmarkCases.map((testCase) => testCase.name);\n}\n\nexport function rdfModelsPostgresQueryBenchmarkCaseNames(): string[] {\n return rdfModelsPostgresQueryBenchmarkCases.map((testCase) => testCase.name);\n}\n\nexport function rdfModelsPostgresMaterializedQueryBenchmarkCaseNames(): string[] {\n return rdfModelsPostgresMaterializedQueryBenchmarkCases.map((testCase) => testCase.name);\n}\n\nexport function rdfModelsSearchFusionQueryBenchmarkCaseNames(): string[] {\n return rdfModelsSearchFusionQueryBenchmarkCases.map((testCase) => testCase.name);\n}\n\nexport function rdfModelsExtremeBenchmarkCaseNames(): string[] {\n return rdfModelsExtremeBenchmarkCases.map((testCase) => testCase.name);\n}\n\nexport function rdfModelsExtremeQueryBenchmarkCaseNames(): string[] {\n return rdfModelsExtremeQueryBenchmarkCases.map((testCase) => testCase.name);\n}\n\nexport function rdfModelsBenchmarkScaleTargetQuads(scale: RdfBenchmarkScale): number {\n return RDF_MODELS_SCALE_TARGET_QUADS[scale];\n}\n\nexport function rdfModelsBenchmarkSyntheticPodCount(scale: RdfBenchmarkScale): number {\n return RDF_MODELS_SYNTHETIC_POD_COUNTS[scale];\n}\n\nexport function estimateRdfModelsSyntheticQuadCount(syntheticMessages: number): number {\n return Math.max(0, Math.floor(syntheticMessages)) * RDF_MODELS_SYNTHETIC_MESSAGE_QUADS;\n}\n\nexport function syntheticMessagesForRdfModelsTargetQuads(targetQuads: number): number {\n return Math.ceil(Math.max(0, Math.floor(targetQuads)) / RDF_MODELS_SYNTHETIC_MESSAGE_QUADS);\n}\n\nexport function defaultSyntheticMessagesForRdfModelsScale(scale: RdfBenchmarkScale): number {\n if (scale === 'small') {\n return 12;\n }\n return syntheticMessagesForRdfModelsTargetQuads(rdfModelsBenchmarkScaleTargetQuads(scale));\n}\n\nexport function rdfModelsBenchmarkScaleSatisfied(scale: RdfBenchmarkScale, seedQuadCount: number): boolean {\n return seedQuadCount >= rdfModelsBenchmarkScaleTargetQuads(scale);\n}\n\nexport function rdfModelsBenchmarkTargetSatisfied(targetQuads: number, seedQuadCount: number): boolean {\n return seedQuadCount >= Math.max(0, Math.floor(targetQuads));\n}\n\nexport function buildRdfModelsBenchmarkSeed(options: RdfModelsBenchmarkSeedOptions): Quad[] {\n const quads: Quad[] = [];\n\n seedChatTaskThreadRunProviderQuads(quads);\n seedAgentContactFavoriteQuads(quads);\n seedProfileAccessControlIssueQuads(quads);\n seedSessionAuditAiRuntimeQuads(quads);\n seedSettingsQuads(quads);\n seedCanonicalMessages(quads);\n seedSyntheticThreads(quads, options.syntheticPodCount);\n const caseProfile = options.caseProfile ?? 'default';\n const searchFusionBroadSourceCount = rdfModelsBenchmarkProfileRequiresSearchFusion(caseProfile)\n ? Math.max(0, Math.floor(options.searchFusionBroadSourceCount ?? RDF_MODELS_SEARCH_FUSION_BROAD_SOURCE_COUNT))\n : 0;\n const syntheticMessages = rdfModelsBenchmarkProfileRequiresSearchFusion(caseProfile)\n ? Math.max(options.syntheticMessages, searchFusionBroadSourceCount + 3)\n : options.syntheticMessages;\n seedSyntheticMessages(quads, syntheticMessages, options.syntheticPodCount);\n if (searchFusionBroadSourceCount > 0) {\n seedPrimaryPodSearchFusionMessages(quads, searchFusionBroadSourceCount + 3, options.syntheticPodCount);\n }\n if (options.caseProfile === 'extreme' || options.caseProfile === 'all') {\n seedNativeStressMessages(quads);\n }\n\n return quads;\n}\n\nexport function rdfModelsBenchmarkProfileRequiresSearchFusion(profile: RdfBenchmarkCaseProfile): boolean {\n return profile === 'fusion' || profile === 'all';\n}\n\nexport function rdfModelsSearchFusionBroadSourceCountForScale(scale: RdfBenchmarkScale): number {\n return RDF_MODELS_SEARCH_FUSION_BROAD_SOURCE_COUNTS[scale];\n}\n\nexport async function seedRdfModelsSearchFusionIndexes(engine: {\n indexTextSource(source: RdfTextSourceInput, text: string, chunks?: RdfTextChunkInput[]): void | Promise<void>;\n indexVectorSource(source: RdfVectorSourceInput, chunks: RdfVectorChunkInput[]): void | Promise<void>;\n}, options: { broadSourceCount?: number } = {}): Promise<void> {\n for (const source of rdfModelsSearchFusionSources(options.broadSourceCount)) {\n const sourceInput = {\n source: source.source,\n workspace: WORKSPACE,\n localPath: source.localPath,\n contentType: 'text/markdown',\n sourceVersion: '2026-05-18',\n };\n const chunk = {\n chunkKey: 'context',\n ordinal: 0,\n level: 1,\n heading: source.heading,\n path: [source.heading],\n content: source.content,\n startOffset: 0,\n endOffset: source.content.length,\n };\n await engine.indexTextSource(sourceInput, source.content, [chunk]);\n await engine.indexVectorSource(sourceInput, [{\n ...chunk,\n embedding: source.embedding,\n model: RDF_MODELS_SEARCH_VECTOR_MODEL,\n }]);\n }\n}\n\nfunction rdfModelsSearchFusionSources(broadSourceCount = RDF_MODELS_SEARCH_FUSION_BROAD_SOURCE_COUNT): RdfModelsSearchFusionSource[] {\n const focusedSources: RdfModelsSearchFusionSource[] = [\n {\n source: syntheticMessageIri(DATA, 0),\n localPath: '.data/chat/default/2026/05/01/messages.ttl#synthetic_0',\n heading: 'Runtime Approvals',\n content: 'Runtime approvals mention repository context and active agent steering.',\n embedding: [0.95, 0.2, 0.05],\n },\n {\n source: syntheticMessageIri(DATA, 1),\n localPath: '.data/chat/default/2026/05/02/messages.ttl#synthetic_1',\n heading: 'Runtime Follow Up',\n content: 'Runtime approvals follow-up with workspace notes and summary context.',\n embedding: [0.9, 0.25, 0.05],\n },\n {\n source: syntheticMessageIri(DATA, 2),\n localPath: '.data/chat/default/2026/05/03/messages.ttl#synthetic_2',\n heading: 'Irrelevant Note',\n content: 'Unrelated billing and profile note without the target wording.',\n embedding: [0.05, 0.1, 0.95],\n },\n ];\n const broadSources = Array.from({ length: Math.max(0, Math.floor(broadSourceCount)) }, (_, index) => {\n const sourceIndex = index + 3;\n const day = String((sourceIndex % 28) + 1).padStart(2, '0');\n return {\n source: syntheticMessageIri(DATA, sourceIndex),\n localPath: `.data/chat/default/2026/05/${day}/messages.ttl#synthetic_${sourceIndex}`,\n heading: `Candidate Retrieval ${index + 1}`,\n content: `Candidate retrieval context chunk ${index + 1} with workspace evidence and structured message links.`,\n embedding: [0.82, 0.48 - (index % 5) * 0.01, 0.12],\n };\n });\n return [...focusedSources, ...broadSources];\n}\n\nfunction seedChatTaskThreadRunProviderQuads(quads: Quad[]): void {\n const chatGraph = `${DATA}/chat/default/index.ttl`;\n const chat = `${chatGraph}#this`;\n const thread = `${chatGraph}#thread_1`;\n const taskGraph = `${DATA}/task/index.ttl`;\n const task = `${taskGraph}#default`;\n const taskThreadGraph = `${DATA}/task/default/index.ttl`;\n const taskThread = `${taskThreadGraph}#thread_1`;\n const scheduleGraph = `${DATA}/task/default/2026/05/18/schedules.ttl`;\n const runGraph = `${DATA}/task/default/2026/05/18/runs.ttl`;\n const run = `${runGraph}#run_1`;\n const latestMessage = `${DATA}/chat/default/2026/05/18/messages.ttl#msg_3`;\n const provider = `${SETTINGS}/providers/anthropic.ttl`;\n const model = `${provider}#claude-sonnet-4`;\n const credentialGraph = `${SETTINGS}/credentials.ttl`;\n const credential = `${credentialGraph}#anthropic-default`;\n const standbyCredential = `${credentialGraph}#anthropic-standby`;\n const oauthCredential = `${credentialGraph}#github-oauth`;\n\n quads.push(\n seedQuad(chat, RDF_TYPE, iri(`${MEETING}LongChat`), chatGraph),\n seedQuad(chat, DCT_TITLE, literal('Default chat'), chatGraph),\n seedQuad(chat, DCT_MODIFIED, literal('2026-05-18T00:00:00.000Z'), chatGraph),\n seedQuad(chat, `${UDFS}favorite`, literal('true', iri(XSD_BOOLEAN)), chatGraph),\n seedQuad(chat, `${UDFS}lastActiveAt`, literal('2026-05-18T00:03:00.000Z'), chatGraph),\n seedQuad(chat, `${UDFS}lastMessage`, iri(latestMessage), chatGraph),\n seedQuad(thread, RDF_TYPE, iri(`${SIOC}Thread`), chatGraph),\n seedQuad(thread, SIOC_HAS_PARENT, iri(chat), chatGraph),\n seedQuad(thread, `${UDFS}status`, literal('active'), chatGraph),\n seedQuad(thread, DCT_CREATED, literal('2026-05-18T00:00:01.000Z'), chatGraph),\n seedQuad(thread, `${UDFS}workspace`, iri(WORKSPACE), chatGraph),\n seedQuad(task, RDF_TYPE, iri(`${UDFS}Task`), taskGraph),\n seedQuad(task, DCT_TITLE, literal('Daily repository summary'), taskGraph),\n seedQuad(task, `${UDFS}prompt`, literal('Summarize repository changes and open approvals.'), taskGraph),\n seedQuad(task, `${UDFS}status`, literal('active'), taskGraph),\n seedQuad(task, `${UDFS}workspace`, iri(WORKSPACE), taskGraph),\n seedQuad(task, `${UDFS}runner`, literal('pi'), taskGraph),\n seedQuad(task, `${UDFS}triggerKind`, literal('cron'), taskGraph),\n seedQuad(task, `${UDFS}cron`, literal('0 * * * *'), taskGraph),\n seedQuad(task, `${UDFS}nextRunAt`, literal('2026-05-18T01:00:00.000Z'), taskGraph),\n seedQuad(task, `${UDFS}lastRunAt`, literal('2026-05-18T00:00:00.000Z'), taskGraph),\n seedQuad(task, `${UDFS}inThread`, iri(taskThread), taskGraph),\n seedQuad(taskThread, RDF_TYPE, iri(`${SIOC}Thread`), taskThreadGraph),\n seedQuad(taskThread, `${UDFS}status`, literal('active'), taskThreadGraph),\n seedQuad(taskThread, DCT_CREATED, literal('2026-05-18T00:30:00.000Z'), taskThreadGraph),\n seedQuad(`${scheduleGraph}#schedule_1`, RDF_TYPE, iri(`${UDFS}Schedule`), scheduleGraph),\n seedQuad(`${scheduleGraph}#schedule_1`, `${UDFS}status`, literal('active'), scheduleGraph),\n seedQuad(`${scheduleGraph}#schedule_1`, `${UDFS}nextRunAt`, literal('2026-05-18T01:00:00.000Z'), scheduleGraph),\n seedQuad(run, RDF_TYPE, iri(`${UDFS}Run`), runGraph),\n seedQuad(run, `${UDFS}commandKind`, literal('task'), runGraph),\n seedQuad(run, `${UDFS}surfaceId`, literal('default'), runGraph),\n seedQuad(run, `${UDFS}task`, iri(task), runGraph),\n seedQuad(run, `${UDFS}inThread`, iri(taskThread), runGraph),\n seedQuad(run, `${UDFS}runner`, literal('pi'), runGraph),\n seedQuad(run, `${UDFS}prompt`, literal('Summarize repository changes and open approvals.'), runGraph),\n seedQuad(run, DCT_CREATED, literal('2026-05-18T01:00:00.000Z'), runGraph),\n seedQuad(run, `${UDFS}status`, literal('queued'), runGraph),\n seedQuad(run, `${UDFS}workspace`, iri(WORKSPACE), runGraph),\n seedQuad(run, `${UDFS}priority`, literal('10', iri(XSD_INTEGER)), runGraph),\n seedQuad(`${runGraph}#run_2`, RDF_TYPE, iri(`${UDFS}Run`), runGraph),\n seedQuad(`${runGraph}#run_2`, DCT_CREATED, literal('2026-05-18T01:05:00.000Z'), runGraph),\n seedQuad(`${runGraph}#run_2`, `${UDFS}status`, literal('queued'), runGraph),\n seedQuad(`${runGraph}#run_2`, `${UDFS}workspace`, iri(WORKSPACE), runGraph),\n seedQuad(`${runGraph}#run_2`, `${UDFS}priority`, literal('2', iri(XSD_INTEGER)), runGraph),\n seedQuad(`${runGraph}#run_3`, RDF_TYPE, iri(`${UDFS}Run`), runGraph),\n seedQuad(`${runGraph}#run_3`, DCT_CREATED, literal('2026-05-18T01:10:00.000Z'), runGraph),\n seedQuad(`${runGraph}#run_3`, `${UDFS}status`, literal('running'), runGraph),\n seedQuad(`${runGraph}#run_3`, `${UDFS}workspace`, iri(WORKSPACE), runGraph),\n seedQuad(`${runGraph}#run_3`, `${UDFS}priority`, literal('8', iri(XSD_INTEGER)), runGraph),\n seedQuad(`${runGraph}#run_3`, `${UDFS}leaseOwner`, literal('worker-1'), runGraph),\n seedQuad(`${runGraph}#run_3`, `${UDFS}leaseExpiresAt`, literal('2026-05-18T01:15:00.000Z'), runGraph),\n seedQuad(`${runGraph}#run_3`, `${UDFS}heartbeatAt`, literal('2026-05-18T01:11:00.000Z'), runGraph),\n seedQuad(`${runGraph}#run_4`, RDF_TYPE, iri(`${UDFS}Run`), runGraph),\n seedQuad(`${runGraph}#run_4`, DCT_CREATED, literal('2026-05-18T01:20:00.000Z'), runGraph),\n seedQuad(`${runGraph}#run_4`, `${UDFS}status`, literal('waiting_input'), runGraph),\n seedQuad(`${runGraph}#run_4`, `${UDFS}workspace`, iri(WORKSPACE), runGraph),\n seedQuad(`${runGraph}#run_4`, `${UDFS}runner`, literal('pi'), runGraph),\n seedQuad(`${runGraph}#step_1`, RDF_TYPE, iri(`${UDFS}RunStep`), runGraph),\n seedQuad(`${runGraph}#step_1`, `${UDFS}run`, iri(run), runGraph),\n seedQuad(`${runGraph}#step_1`, `${UDFS}status`, literal('runtime.tool_call'), runGraph),\n seedQuad(`${runGraph}#step_1`, DCT_CREATED, literal('2026-05-18T01:00:05.000Z'), runGraph),\n seedQuad(`${runGraph}#step_2`, RDF_TYPE, iri(`${UDFS}RunStep`), runGraph),\n seedQuad(`${runGraph}#step_2`, `${UDFS}run`, iri(run), runGraph),\n seedQuad(`${runGraph}#step_2`, `${UDFS}status`, literal('run.completed'), runGraph),\n seedQuad(`${runGraph}#step_2`, DCT_CREATED, literal('2026-05-18T01:00:10.000Z'), runGraph),\n seedQuad(provider, RDF_TYPE, iri(`${XPOD_AI}Provider`), provider),\n seedQuad(provider, `${XPOD_AI}displayName`, literal('Anthropic'), provider),\n seedQuad(provider, `${XPOD_AI}baseUrl`, literal('https://api.anthropic.com/v1'), provider),\n seedQuad(provider, `${XPOD_AI}hasModel`, iri(model), provider),\n seedQuad(provider, `${XPOD_AI}defaultModel`, iri(model), provider),\n seedQuad(model, RDF_TYPE, iri(`${XPOD_AI}Model`), provider),\n seedQuad(model, `${XPOD_AI}isProvidedBy`, iri(provider), provider),\n seedQuad(model, `${XPOD_AI}status`, literal('active'), provider),\n seedQuad(model, `${XPOD_AI}modelType`, literal('chat'), provider),\n seedQuad(model, `${XPOD_AI}dimension`, literal('0', iri(XSD_INTEGER)), provider),\n seedQuad(credential, RDF_TYPE, iri(`${XPOD_CREDENTIAL}Credential`), credentialGraph),\n seedQuad(credential, `${XPOD_CREDENTIAL}provider`, iri(provider), credentialGraph),\n seedQuad(credential, `${XPOD_CREDENTIAL}service`, literal('ai'), credentialGraph),\n seedQuad(credential, `${XPOD_CREDENTIAL}status`, literal('active'), credentialGraph),\n seedQuad(credential, `${XPOD_CREDENTIAL}apiKey`, literal('sk-ant-test'), credentialGraph),\n seedQuad(credential, `${XPOD_CREDENTIAL}isDefault`, literal('true', iri(XSD_BOOLEAN)), credentialGraph),\n seedQuad(credential, `${XPOD_CREDENTIAL}lastUsedAt`, literal('2026-05-18T00:00:00.000Z'), credentialGraph),\n seedQuad(credential, `${XPOD_CREDENTIAL}failCount`, literal('15', iri(XSD_INTEGER)), credentialGraph),\n seedQuad(standbyCredential, RDF_TYPE, iri(`${XPOD_CREDENTIAL}Credential`), credentialGraph),\n seedQuad(standbyCredential, `${XPOD_CREDENTIAL}provider`, iri(provider), credentialGraph),\n seedQuad(standbyCredential, `${XPOD_CREDENTIAL}service`, literal('ai'), credentialGraph),\n seedQuad(standbyCredential, `${XPOD_CREDENTIAL}status`, literal('active'), credentialGraph),\n seedQuad(standbyCredential, `${XPOD_CREDENTIAL}apiKey`, literal('sk-ant-standby'), credentialGraph),\n seedQuad(standbyCredential, `${XPOD_CREDENTIAL}isDefault`, literal('false', iri(XSD_BOOLEAN)), credentialGraph),\n seedQuad(standbyCredential, `${XPOD_CREDENTIAL}lastUsedAt`, literal('2026-05-17T00:00:00.000Z'), credentialGraph),\n seedQuad(standbyCredential, `${XPOD_CREDENTIAL}failCount`, literal('0', iri(XSD_INTEGER)), credentialGraph),\n seedQuad(oauthCredential, RDF_TYPE, iri(`${XPOD_CREDENTIAL}Credential`), credentialGraph),\n seedQuad(oauthCredential, `${XPOD_CREDENTIAL}service`, literal('github'), credentialGraph),\n seedQuad(oauthCredential, `${XPOD_CREDENTIAL}status`, literal('active'), credentialGraph),\n seedQuad(oauthCredential, `${XPOD_CREDENTIAL}label`, literal('GitHub OAuth'), credentialGraph),\n seedQuad(oauthCredential, `${XPOD_CREDENTIAL}oauthRefreshToken`, literal('gho-refresh-test'), credentialGraph),\n seedQuad(oauthCredential, `${XPOD_CREDENTIAL}oauthAccessToken`, literal('gho-access-test'), credentialGraph),\n seedQuad(oauthCredential, `${XPOD_CREDENTIAL}oauthExpiresAt`, literal('2026-05-18T23:00:00.000Z'), credentialGraph),\n );\n}\n\nfunction seedSettingsQuads(quads: Quad[]): void {\n const owner = `${RDF_MODELS_BENCHMARK_POD}/profile/card#me`;\n const uiThemeGraph = `${SETTINGS}/ui.theme.ttl`;\n const aiDefaultAssistantGraph = `${SETTINGS}/ai.defaultAssistant.ttl`;\n const aiProviderSecretGraph = `${SETTINGS}/ai.providerSecret.ttl`;\n\n quads.push(\n seedQuad(uiThemeGraph, RDF_TYPE, iri(SCHEMA_PROPERTY_VALUE), uiThemeGraph),\n seedQuad(uiThemeGraph, `${UDFS}settingKey`, literal('ui.theme'), uiThemeGraph),\n seedQuad(uiThemeGraph, `${UDFS}settingValue`, literal('dark'), uiThemeGraph),\n seedQuad(uiThemeGraph, `${UDFS}settingType`, literal('string'), uiThemeGraph),\n seedQuad(uiThemeGraph, DCT_TYPE, literal('ui'), uiThemeGraph),\n seedQuad(uiThemeGraph, DCT_CREATOR, iri(owner), uiThemeGraph),\n seedQuad(uiThemeGraph, DCT_TITLE, literal('Theme'), uiThemeGraph),\n seedQuad(uiThemeGraph, DCT_CREATED, literal('2026-05-18T00:00:00.000Z'), uiThemeGraph),\n seedQuad(uiThemeGraph, DCT_MODIFIED, literal('2026-05-18T00:00:00.000Z'), uiThemeGraph),\n seedQuad(aiDefaultAssistantGraph, RDF_TYPE, iri(SCHEMA_PROPERTY_VALUE), aiDefaultAssistantGraph),\n seedQuad(aiDefaultAssistantGraph, `${UDFS}settingKey`, literal('ai.defaultAssistant'), aiDefaultAssistantGraph),\n seedQuad(aiDefaultAssistantGraph, `${UDFS}settingValue`, literal(`${DATA}/agents/secretary.ttl#this`), aiDefaultAssistantGraph),\n seedQuad(aiDefaultAssistantGraph, `${UDFS}settingType`, literal('uri'), aiDefaultAssistantGraph),\n seedQuad(aiDefaultAssistantGraph, DCT_TYPE, literal('ai'), aiDefaultAssistantGraph),\n seedQuad(aiDefaultAssistantGraph, DCT_CREATOR, iri(owner), aiDefaultAssistantGraph),\n seedQuad(aiDefaultAssistantGraph, DCT_DESCRIPTION, literal('Default AI assistant for chat and task commands.'), aiDefaultAssistantGraph),\n seedQuad(aiProviderSecretGraph, RDF_TYPE, iri(SCHEMA_PROPERTY_VALUE), aiProviderSecretGraph),\n seedQuad(aiProviderSecretGraph, `${UDFS}settingKey`, literal('ai.providerSecret'), aiProviderSecretGraph),\n seedQuad(aiProviderSecretGraph, `${UDFS}settingValue`, literal('encrypted:test'), aiProviderSecretGraph),\n seedQuad(aiProviderSecretGraph, `${UDFS}settingType`, literal('string'), aiProviderSecretGraph),\n seedQuad(aiProviderSecretGraph, DCT_TYPE, literal('ai'), aiProviderSecretGraph),\n seedQuad(aiProviderSecretGraph, DCT_CREATOR, iri(owner), aiProviderSecretGraph),\n seedQuad(aiProviderSecretGraph, `${UDFS}status`, literal('true', iri(XSD_BOOLEAN)), aiProviderSecretGraph),\n );\n}\n\nfunction seedAgentContactFavoriteQuads(quads: Quad[]): void {\n const agentGraph = `${DATA}/agents/secretary.ttl`;\n const agent = `${agentGraph}#this`;\n const contactGraph = `${DATA}/contacts/secretary.ttl`;\n const contact = contactGraph;\n const favoriteGraph = `${DATA}/favorites/2026/05/18.ttl`;\n const favorite = `${favoriteGraph}#favorite_1`;\n const chat = `${DATA}/chat/default/index.ttl#this`;\n\n quads.push(\n seedQuad(agent, RDF_TYPE, iri(FOAF_AGENT), agentGraph),\n seedQuad(agent, `${UDFS}provider`, literal('anthropic'), agentGraph),\n seedQuad(agent, `${UDFS}model`, literal('claude-sonnet-4'), agentGraph),\n seedQuad(contact, RDF_TYPE, iri(VCARD_INDIVIDUAL), contactGraph),\n seedQuad(contact, FOAF_PRIMARY_TOPIC, iri(agent), contactGraph),\n seedQuad(contact, `${UDFS}contactType`, literal('agent'), contactGraph),\n seedQuad(contact, `${UDFS}favorite`, literal('true'), contactGraph),\n seedQuad(favorite, RDF_TYPE, iri(SCHEMA_CREATIVE_WORK), favoriteGraph),\n seedQuad(favorite, `${UDFS}favoriteTarget`, iri(chat), favoriteGraph),\n seedQuad(favorite, `${UDFS}favoredAt`, literal('2026-05-18T02:00:00.000Z'), favoriteGraph),\n );\n}\n\nfunction seedProfileAccessControlIssueQuads(quads: Quad[]): void {\n const profileGraph = `${RDF_MODELS_BENCHMARK_POD}/profile/card`;\n const profile = `${profileGraph}#me`;\n const profileAclGraph = `${profileGraph}.acl`;\n const profileAclAuthorization = `${profileAclGraph}#public`;\n const profileAcrGraph = `${RDF_MODELS_BENCHMARK_POD}/profile/.acr`;\n const profileAccessControl = `${profileAcrGraph}#publicReadAccess`;\n const issueGraph = `${DATA}/issues/issue_1.ttl`;\n const issue = issueGraph;\n const approvalGraph = `${DATA}/approvals/2026/05/18.ttl`;\n const approval = `${approvalGraph}#approval_1`;\n const grantGraph = `${SETTINGS}/autonomy/grants/default.ttl`;\n const grant = grantGraph;\n const inboxGraph = `${RDF_MODELS_BENCHMARK_POD}/inbox/notification_1.ttl`;\n const inboxNotification = inboxGraph;\n\n quads.push(\n seedQuad(profile, RDF_TYPE, iri(FOAF_PERSON), profileGraph),\n seedQuad(profile, VCARD_FN, literal('Alice'), profileGraph),\n seedQuad(profile, LDP_INBOX, iri(`${RDF_MODELS_BENCHMARK_POD}/inbox/`), profileGraph),\n seedQuad(profileAclAuthorization, RDF_TYPE, iri(`${ACL}Authorization`), profileAclGraph),\n seedQuad(profileAclAuthorization, `${ACL}accessTo`, iri(profileGraph), profileAclGraph),\n seedQuad(profileAclAuthorization, `${ACL}mode`, iri(`${ACL}Read`), profileAclGraph),\n seedQuad(profileGraph, `${ACP}accessControl`, iri(profileAccessControl), profileAcrGraph),\n seedQuad(profileAccessControl, `${ACP}apply`, iri(profileGraph), profileAcrGraph),\n seedQuad(profileAccessControl, `${ACP}allow`, iri(`${ACP}Read`), profileAcrGraph),\n seedQuad(issue, RDF_TYPE, iri(`${UDFS}Issue`), issueGraph),\n seedQuad(issue, DCT_TITLE, literal('Profile access regression'), issueGraph),\n seedQuad(issue, `${UDFS}status`, literal('open'), issueGraph),\n seedQuad(issue, `${UDFS}assignedTo`, iri(profile), issueGraph),\n seedQuad(approval, RDF_TYPE, iri(`${UDFS}ApprovalRequest`), approvalGraph),\n seedQuad(approval, `${UDFS}status`, literal('pending'), approvalGraph),\n seedQuad(approval, `${UDFS}assignedTo`, iri(profile), approvalGraph),\n seedQuad(approval, `${ODRL}target`, iri(WORKSPACE), approvalGraph),\n seedQuad(approval, `${ODRL}action`, iri(`${UDFS}runTool`), approvalGraph),\n seedQuad(grant, RDF_TYPE, iri(`${ODRL}Policy`), grantGraph),\n seedQuad(grant, RDF_TYPE, iri(`${UDFS}AutonomyGrant`), grantGraph),\n seedQuad(grant, `${ODRL}target`, iri(WORKSPACE), grantGraph),\n seedQuad(grant, `${ODRL}action`, iri(`${UDFS}runTool`), grantGraph),\n seedQuad(grant, `${UDFS}effect`, literal('allow'), grantGraph),\n seedQuad(inboxNotification, RDF_TYPE, iri(`${AS}Activity`), inboxGraph),\n seedQuad(inboxNotification, `${AS}actor`, iri(profile), inboxGraph),\n seedQuad(inboxNotification, `${AS}object`, iri(issue), inboxGraph),\n seedQuad(inboxNotification, DCT_CREATED, literal('2026-05-18T02:30:00.000Z'), inboxGraph),\n );\n}\n\nfunction seedSessionAuditAiRuntimeQuads(quads: Quad[]): void {\n const profile = `${RDF_MODELS_BENCHMARK_POD}/profile/card#me`;\n const chatGraph = `${DATA}/chat/default/index.ttl`;\n const chat = `${chatGraph}#this`;\n const thread = `${chatGraph}#thread_1`;\n const message = `${DATA}/chat/default/2026/05/18/messages.ttl#msg_1`;\n const sessionGraph = `${DATA}/sessions/2026/05/18/session_1.ttl`;\n const session = sessionGraph;\n const approval = `${DATA}/approvals/2026/05/18.ttl#approval_1`;\n const grant = `${SETTINGS}/autonomy/grants/default.ttl`;\n const auditGraph = `${DATA}/audits/2026/05/18.ttl`;\n const audit = `${auditGraph}#audit_1`;\n const provider = `${SETTINGS}/providers/anthropic.ttl`;\n const model = `${provider}#claude-sonnet-4`;\n const aiConfigGraph = `${SETTINGS}/ai/config.ttl`;\n const aiConfig = `${aiConfigGraph}#default`;\n const vectorStoreGraph = `${SETTINGS}/ai/vector-stores.ttl`;\n const vectorStore = `${vectorStoreGraph}#chat-default`;\n const indexedFileGraph = `${SETTINGS}/ai/indexed-files.ttl`;\n const indexedFile = `${indexedFileGraph}#chat-default-messages`;\n const agentStatusGraph = `${SETTINGS}/ai/agent-status.ttl`;\n const agentStatus = `${agentStatusGraph}#secretary`;\n\n quads.push(\n seedQuad(session, RDF_TYPE, iri(`${UDFS}Session`), sessionGraph),\n seedQuad(session, `${UDFS}actor`, iri(profile), sessionGraph),\n seedQuad(session, `${UDFS}conversation`, iri(chat), sessionGraph),\n seedQuad(session, `${UDFS}inThread`, iri(thread), sessionGraph),\n seedQuad(session, `${UDFS}conversationType`, literal('direct'), sessionGraph),\n seedQuad(session, `${UDFS}sessionStatus`, literal('active'), sessionGraph),\n seedQuad(session, `${UDFS}sessionTool`, literal('codex'), sessionGraph),\n seedQuad(session, `${UDFS}tokenUsage`, literal('1500', iri(XSD_INTEGER)), sessionGraph),\n seedQuad(session, `${UDFS}messageResource`, iri(message), sessionGraph),\n seedQuad(session, `${UDFS}policy`, iri(grant), sessionGraph),\n seedQuad(session, `${UDFS}policyVersion`, literal('2026-05'), sessionGraph),\n seedQuad(session, DCT_CREATED, literal('2026-05-18T03:00:00.000Z'), sessionGraph),\n seedQuad(session, DCT_MODIFIED, literal('2026-05-18T03:10:00.000Z'), sessionGraph),\n seedQuad(audit, RDF_TYPE, iri(`${UDFS}AuditEntry`), auditGraph),\n seedQuad(audit, `${UDFS}action`, literal('runTool'), auditGraph),\n seedQuad(audit, `${UDFS}actor`, iri(profile), auditGraph),\n seedQuad(audit, `${UDFS}actorRole`, literal('owner'), auditGraph),\n seedQuad(audit, `${UDFS}onBehalfOf`, iri(profile), auditGraph),\n seedQuad(audit, `${UDFS}session`, iri(session), auditGraph),\n seedQuad(audit, `${UDFS}conversation`, iri(chat), auditGraph),\n seedQuad(audit, `${UDFS}inThread`, iri(thread), auditGraph),\n seedQuad(audit, `${UDFS}entry`, iri(`${DATA}/task/default/2026/05/18/runs.ttl#step_1`), auditGraph),\n seedQuad(audit, `${UDFS}toolCallId`, literal('call_1'), auditGraph),\n seedQuad(audit, `${UDFS}toolName`, literal('bash'), auditGraph),\n seedQuad(audit, `${UDFS}approval`, iri(approval), auditGraph),\n seedQuad(audit, `${UDFS}policy`, iri(grant), auditGraph),\n seedQuad(audit, `${UDFS}policyVersion`, literal('v1'), auditGraph),\n seedQuad(audit, DCT_CREATED, literal('2026-05-18T03:05:00.000Z'), auditGraph),\n seedQuad(aiConfig, RDF_TYPE, iri(`${XPOD_AI}AIConfig`), aiConfigGraph),\n seedQuad(aiConfig, `${XPOD_AI}embeddingModel`, iri(model), aiConfigGraph),\n seedQuad(aiConfig, `${XPOD_AI}previousModel`, iri(model), aiConfigGraph),\n seedQuad(aiConfig, `${XPOD_AI}migrationStatus`, literal('ready'), aiConfigGraph),\n seedQuad(aiConfig, `${XPOD_AI}migrationProgress`, literal('100', iri(XSD_INTEGER)), aiConfigGraph),\n seedQuad(aiConfig, `${XPOD_AI}updatedAt`, literal('2026-05-18T03:15:00.000Z'), aiConfigGraph),\n seedQuad(vectorStore, RDF_TYPE, iri(`${XPOD_AI}VectorStore`), vectorStoreGraph),\n seedQuad(vectorStore, `${XPOD_AI}name`, literal('Default chat vectors'), vectorStoreGraph),\n seedQuad(vectorStore, `${XPOD_AI}container`, iri(`${DATA}/chat/default/`), vectorStoreGraph),\n seedQuad(vectorStore, `${XPOD_AI}chunkingStrategy`, literal('markdown-heading-v1'), vectorStoreGraph),\n seedQuad(vectorStore, `${XPOD_AI}status`, literal('active'), vectorStoreGraph),\n seedQuad(vectorStore, `${XPOD_AI}createdAt`, literal('2026-05-18T03:20:00.000Z'), vectorStoreGraph),\n seedQuad(vectorStore, `${XPOD_AI}lastActiveAt`, literal('2026-05-18T03:25:00.000Z'), vectorStoreGraph),\n seedQuad(indexedFile, RDF_TYPE, iri(`${XPOD_AI}IndexedFile`), indexedFileGraph),\n seedQuad(indexedFile, `${XPOD_AI}fileUrl`, iri(`${DATA}/chat/default/2026/05/18/messages.ttl`), indexedFileGraph),\n seedQuad(indexedFile, `${XPOD_AI}vectorId`, literal('42', iri(XSD_INTEGER)), indexedFileGraph),\n seedQuad(indexedFile, `${XPOD_AI}chunkingStrategy`, literal('markdown-heading-v1'), indexedFileGraph),\n seedQuad(indexedFile, `${XPOD_AI}status`, literal('indexed'), indexedFileGraph),\n seedQuad(indexedFile, `${XPOD_AI}usageBytes`, literal('2048', iri(XSD_INTEGER)), indexedFileGraph),\n seedQuad(indexedFile, `${XPOD_AI}indexedAt`, literal('2026-05-18T03:30:00.000Z'), indexedFileGraph),\n seedQuad(agentStatus, RDF_TYPE, iri(`${XPOD_AI}AgentStatus`), agentStatusGraph),\n seedQuad(agentStatus, `${XPOD_AI}agentId`, literal('secretary'), agentStatusGraph),\n seedQuad(agentStatus, `${XPOD_AI}status`, literal('running'), agentStatusGraph),\n seedQuad(agentStatus, `${XPOD_AI}startedAt`, literal('2026-05-18T03:35:00.000Z'), agentStatusGraph),\n seedQuad(agentStatus, `${XPOD_AI}lastActivityAt`, literal('2026-05-18T03:40:00.000Z'), agentStatusGraph),\n seedQuad(agentStatus, `${XPOD_AI}currentTaskId`, literal('default'), agentStatusGraph),\n );\n}\n\nfunction seedCanonicalMessages(quads: Quad[]): void {\n const chat = `${DATA}/chat/default/index.ttl#this`;\n const thread = `${DATA}/chat/default/index.ttl#thread_1`;\n const graph = `${DATA}/chat/default/2026/05/18/messages.ttl`;\n const scores = ['2', '10', '4'];\n const profile = `${RDF_MODELS_BENCHMARK_POD}/profile/card#me`;\n const agent = `${DATA}/agents/secretary.ttl#this`;\n\n for (let index = 0; index < 3; index += 1) {\n const message = `${graph}#msg_${index + 1}`;\n const timestamp = `2026-05-18T00:0${index + 1}:00.000Z`;\n const maker = index === 0 ? profile : agent;\n quads.push(\n seedQuad(message, RDF_TYPE, iri(`${MEETING}Message`), graph),\n seedQuad(message, SIOC_HAS_MEMBER, iri(thread), graph),\n seedQuad(message, SIOC_HAS_CONTAINER, iri(thread), graph),\n seedQuad(chat, WF_MESSAGE, iri(message), graph),\n seedQuad(message, FOAF_MAKER, iri(maker), graph),\n seedQuad(message, `${UDFS}messageType`, literal(index === 0 ? 'user' : 'assistant'), graph),\n seedQuad(message, `${UDFS}messageStatus`, literal('completed'), graph),\n seedQuad(message, DCT_CREATED, literal(timestamp), graph),\n seedQuad(message, DCT_MODIFIED, literal(timestamp), graph),\n seedQuad(message, `${UDFS}score`, literal(scores[index], namedNode(XSD_INTEGER)), graph),\n seedQuad(message, SIOC_CONTENT, literal(`canonical message ${index + 1}`), graph),\n );\n }\n quads.push(\n seedQuad(`${graph}#msg_2`, `${UDFS}replyTo`, iri(`${graph}#msg_1`), graph),\n seedQuad(`${graph}#msg_3`, `${UDFS}routeTargetAgentId`, literal('secretary'), graph),\n seedQuad(`${graph}#msg_3`, `${UDFS}coordinationId`, literal('coordination_1'), graph),\n );\n}\n\nfunction seedSyntheticThreads(quads: Quad[], podCount: number): void {\n const syntheticPodCount = Math.max(1, Math.floor(podCount));\n for (let podIndex = 0; podIndex < syntheticPodCount; podIndex += 1) {\n const pod = podIndex === 0 ? RDF_MODELS_BENCHMARK_POD : `https://pod.example/synthetic-${podIndex}`;\n const data = `${pod}/.data`;\n const graph = `${data}/chat/default/index.ttl`;\n for (let threadIndex = 0; threadIndex < RDF_MODELS_SYNTHETIC_THREAD_COUNT; threadIndex += 1) {\n const thread = syntheticThreadIri(data, threadIndex);\n const createdAt = new Date(Date.UTC(2026, 4, 1, 0, threadIndex, podIndex)).toISOString();\n quads.push(\n seedQuad(thread, RDF_TYPE, iri(`${SIOC}Thread`), graph),\n seedQuad(thread, `${UDFS}workspace`, iri(WORKSPACE), graph),\n seedQuad(thread, DCT_CREATED, literal(createdAt), graph),\n );\n }\n }\n}\n\nfunction seedSyntheticMessages(quads: Quad[], count: number, podCount: number): void {\n const syntheticPodCount = Math.max(1, Math.floor(podCount));\n for (let index = 0; index < count; index += 1) {\n const podIndex = index % syntheticPodCount;\n const pod = podIndex === 0 ? RDF_MODELS_BENCHMARK_POD : `https://pod.example/synthetic-${podIndex}`;\n const data = `${pod}/.data`;\n seedSyntheticMessage(quads, data, index);\n }\n}\n\nfunction seedPrimaryPodSearchFusionMessages(quads: Quad[], count: number, podCount: number): void {\n const syntheticPodCount = Math.max(1, Math.floor(podCount));\n if (syntheticPodCount === 1) {\n return;\n }\n for (let index = 0; index < count; index += 1) {\n if (index % syntheticPodCount === 0) {\n continue;\n }\n seedSyntheticMessage(quads, DATA, index);\n }\n}\n\nfunction seedSyntheticMessage(quads: Quad[], data: string, index: number): void {\n const thread = syntheticThreadIri(data, index % RDF_MODELS_SYNTHETIC_THREAD_COUNT);\n const dayNumber = (index % 28) + 1;\n const day = String(dayNumber).padStart(2, '0');\n const graph = `${data}/chat/default/2026/05/${day}/messages.ttl`;\n const message = syntheticMessageIri(data, index);\n const timestamp = new Date(Date.UTC(2026, 4, dayNumber, 12, 0, index)).toISOString();\n const score = String((index % 100) + 1);\n const rank = String(index + 1);\n quads.push(\n seedQuad(message, RDF_TYPE, iri(`${MEETING}Message`), graph),\n seedQuad(message, SIOC_HAS_MEMBER, iri(thread), graph),\n seedQuad(message, DCT_CREATED, literal(timestamp), graph),\n seedQuad(message, DCT_MODIFIED, literal(timestamp), graph),\n seedQuad(message, SIOC_CONTENT, literal(`synthetic searchable message ${index}`), graph),\n seedQuad(message, `${UDFS}score`, literal(score, iri(XSD_INTEGER)), graph),\n seedQuad(message, `${UDFS}rank`, literal(rank, iri(XSD_INTEGER)), graph),\n seedQuad(message, `${UDFS}status`, literal('indexed'), graph),\n seedQuad(message, `${UDFS}workspace`, iri(WORKSPACE), graph),\n );\n}\n\nfunction seedNativeStressMessages(quads: Quad[]): void {\n for (let index = 0; index < RDF_MODELS_NATIVE_STRESS_MESSAGE_COUNT; index += 1) {\n const thread = syntheticThreadIri(DATA, index % RDF_MODELS_SYNTHETIC_THREAD_COUNT);\n const message = `${NATIVE_STRESS_GRAPH}#native_${index}`;\n const timestamp = new Date(Date.UTC(2026, 4, 18, 13, 0, index)).toISOString();\n const score = String((index % 100) + 1);\n const rank = String(index + 1);\n quads.push(\n seedQuad(message, RDF_TYPE, iri(`${MEETING}Message`), NATIVE_STRESS_GRAPH),\n seedQuad(message, SIOC_HAS_MEMBER, iri(thread), NATIVE_STRESS_GRAPH),\n seedQuad(message, DCT_CREATED, literal(timestamp), NATIVE_STRESS_GRAPH),\n seedQuad(message, DCT_MODIFIED, literal(timestamp), NATIVE_STRESS_GRAPH),\n seedQuad(message, SIOC_CONTENT, literal(`native stress searchable message ${index}`), NATIVE_STRESS_GRAPH),\n seedQuad(message, `${UDFS}score`, literal(score, iri(XSD_INTEGER)), NATIVE_STRESS_GRAPH),\n seedQuad(message, `${UDFS}rank`, literal(rank, iri(XSD_INTEGER)), NATIVE_STRESS_GRAPH),\n seedQuad(message, `${UDFS}status`, literal('indexed'), NATIVE_STRESS_GRAPH),\n seedQuad(message, `${UDFS}workspace`, iri(WORKSPACE), NATIVE_STRESS_GRAPH),\n );\n }\n}\n\nfunction syntheticThreadIri(data: string, threadIndex: number): string {\n return `${data}/chat/default/index.ttl#thread_${threadIndex + 1}`;\n}\n\nfunction syntheticMessageIri(data: string, messageIndex: number): string {\n const day = String((messageIndex % 28) + 1).padStart(2, '0');\n return `${data}/chat/default/2026/05/${day}/messages.ttl#synthetic_${messageIndex}`;\n}\n\nfunction syntheticThreadValueRows(count: number): RdfBindingRow[] {\n const rows: RdfBindingRow[] = [];\n const safeCount = Math.min(Math.max(0, Math.floor(count)), RDF_MODELS_SYNTHETIC_THREAD_COUNT);\n for (let index = 0; index < safeCount; index += 1) {\n rows.push({\n thread: namedNode(syntheticThreadIri(DATA, index)),\n });\n }\n return rows;\n}\n\nfunction seedQuad(\n subject: string,\n predicate: string,\n object: ReturnType<typeof namedNode> | ReturnType<typeof literal>,\n graph: string,\n): Quad {\n return quad(namedNode(subject), namedNode(predicate), object, namedNode(graph));\n}\n\nfunction iri(value: string): ReturnType<typeof namedNode> {\n return namedNode(value);\n}\n\nexport function runRdfModelsBenchmark(\n engine: SolidRdfEngine,\n options: RdfModelBenchmarkRunOptions = {},\n): RdfModelBenchmarkReport {\n const scale = options.scale ?? 'small';\n const iterations = Math.max(1, Math.floor(options.iterations ?? 1));\n const caseProfile = options.caseProfile ?? 'default';\n const cases = (options.cases ?? rdfModelsBenchmarkCasesForProfile(caseProfile))\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const queryCases = (options.queryCases ?? rdfModelsQueryBenchmarkCasesForProfile(caseProfile))\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const results = cases.map((testCase) => runBenchmarkCase(engine, testCase, iterations));\n const queryResults = queryCases.map((testCase) => runQueryBenchmarkCase(engine, testCase, iterations));\n const failedPlanCases = [\n ...results.filter((result) => !result.planMatched).map((result) => result.name),\n ...queryResults.filter((result) => !result.planMatched).map((result) => result.name),\n ];\n const storage = engine.storageStats();\n\n return {\n engine: 'solid-rdf',\n scale,\n caseProfile,\n iterations,\n generatedAt: new Date().toISOString(),\n planMatched: failedPlanCases.length === 0,\n failedPlanCases,\n performanceCosts: benchmarkPerformanceCosts(storage),\n storage,\n cases: results,\n queryCases: queryResults,\n };\n}\n\nexport async function runRdfModelsPostgresBenchmark(\n engine: RdfEngineLike,\n options: RdfModelPostgresBenchmarkRunOptions = {},\n): Promise<RdfModelPostgresBenchmarkReport> {\n const scale = options.scale ?? 'small';\n const iterations = Math.max(1, Math.floor(options.iterations ?? 1));\n const warmupIterations = Math.max(0, Math.floor(options.warmupIterations ?? 1));\n const concurrency = Math.max(1, Math.floor(options.concurrency ?? 1));\n const caseProfile = options.caseProfile ?? 'default';\n const refreshMutationSources = Math.max(0, Math.floor(options.refreshMutationSources ?? 0));\n const refreshMutationQuadsPerSource = Math.max(1, Math.floor(options.refreshMutationQuadsPerSource ?? 6));\n if (refreshMutationSources > 0 && options.refreshDerivedIndexes === false) {\n throw new Error('refreshMutationSources requires the initial refreshDerivedIndexes pass');\n }\n let refresh: RdfDerivedIndexRefreshResult | undefined;\n let refreshBenchmark: RdfModelPostgresRefreshBenchmark | undefined;\n let postWriteRefreshBenchmark: RdfModelPostgresPostWriteRefreshBenchmark | undefined;\n if (options.refreshDerivedIndexes !== false) {\n const refreshStartedAt = Date.now();\n refresh = await engine.refreshDerivedIndexes();\n refreshBenchmark = postgresRefreshBenchmark(refresh, Date.now() - refreshStartedAt);\n }\n if (refreshMutationSources > 0) {\n postWriteRefreshBenchmark = await runPostWriteRefreshBenchmark(\n engine,\n refreshMutationSources,\n refreshMutationQuadsPerSource,\n );\n }\n const storageBefore = await engine.storageStats();\n const cases = (options.cases ?? rdfModelsBenchmarkCasesForProfile(caseProfile))\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const queryCases = (options.queryCases ?? rdfModelsPostgresQueryBenchmarkCasesForProfile(caseProfile))\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const firstQueryAfterRefresh = refresh\n ? await runPostgresColdStartFirstQuery(engine, queryCases)\n : undefined;\n const results = [];\n for (const testCase of cases) {\n results.push(await runAsyncBenchmarkCase(engine, testCase, iterations, storageBefore.facts, warmupIterations));\n }\n const queryResults = [];\n for (const testCase of queryCases) {\n queryResults.push(await runAsyncQueryBenchmarkCase(engine, testCase, iterations, storageBefore.facts, warmupIterations));\n }\n const concurrencyGate = await runPostgresConcurrencyGate(\n engine,\n queryCases,\n queryResults,\n concurrency,\n storageBefore.facts,\n );\n const servingRegressionGate = runPostgresServingRegressionGate(\n caseProfile,\n queryResults,\n options.servingRegressionThresholds,\n );\n const fusionBenchmarkGate = runPostgresFusionBenchmarkGate(\n caseProfile,\n queryResults,\n options.fusionBenchmarkThresholds,\n options.fusionBenchmarkBaselines,\n );\n const coldStartBenchmark = postgresColdStartBenchmark(\n storageBefore,\n firstQueryAfterRefresh,\n queryResults,\n warmupIterations,\n );\n const failedPlanCases = [\n ...results.filter((result) => !result.planMatched).map((result) => result.name),\n ...queryResults.filter((result) => !result.planMatched).map((result) => result.name),\n ...concurrencyGate.failedCases.map((caseName) => `concurrency:${caseName}`),\n ...servingRegressionGate.failedCases.map((caseName) => `serving-regression:${caseName}`),\n ...fusionBenchmarkGate.failedCases.map((caseName) => `fusion:${caseName}`),\n ];\n const storage = await engine.storageStats();\n const performanceCosts = benchmarkPerformanceCosts(\n storage,\n refreshBenchmark,\n coldStartBenchmark,\n );\n\n return {\n engine: 'postgres-rdf',\n scale,\n caseProfile,\n iterations,\n warmupIterations,\n concurrency,\n generatedAt: new Date().toISOString(),\n planMatched: failedPlanCases.length === 0,\n failedPlanCases,\n concurrencyGate,\n servingRegressionGate,\n fusionBenchmarkGate,\n ...(refresh ? { refresh } : {}),\n ...(refreshBenchmark ? { refreshBenchmark } : {}),\n ...(postWriteRefreshBenchmark ? { postWriteRefreshBenchmark } : {}),\n ...(coldStartBenchmark ? { coldStartBenchmark } : {}),\n performanceCosts,\n storage,\n cases: results,\n queryCases: queryResults,\n };\n}\n\nfunction benchmarkPerformanceCosts(\n storage: RdfEngineStorageStats,\n refreshBenchmark?: RdfModelPostgresRefreshBenchmark,\n coldStartBenchmark?: RdfModelPostgresColdStartBenchmark,\n): RdfModelBenchmarkPerformanceCosts {\n return {\n storageOverhead: {\n factsBytes: storage.factsBytes,\n derivedBytes: storage.derivedBytes,\n totalBytes: storage.totalBytes,\n derivedToFactsRatio: storage.derivedToFactsRatio,\n totalToFactsRatio: storage.totalToFactsRatio,\n },\n ...(refreshBenchmark ? {\n indexBuild: {\n durationMs: refreshBenchmark.durationMs,\n refreshed: refreshBenchmark.refreshed,\n ...(refreshBenchmark.plannerStatsDurationMs !== undefined ? { plannerStatsDurationMs: refreshBenchmark.plannerStatsDurationMs } : {}),\n ...(refreshBenchmark.rebuildMode ? { rebuildMode: refreshBenchmark.rebuildMode } : {}),\n ...(refreshBenchmark.dirtyGraphs !== undefined ? { dirtyGraphs: refreshBenchmark.dirtyGraphs } : {}),\n ...(refreshBenchmark.dirtyPairs !== undefined ? { dirtyPairs: refreshBenchmark.dirtyPairs } : {}),\n ...(refreshBenchmark.dirtyTerms !== undefined ? { dirtyTerms: refreshBenchmark.dirtyTerms } : {}),\n },\n } : {}),\n ...(coldStartBenchmark?.startup ? {\n coldStart: {\n ...(coldStartBenchmark.startup.durationMs !== undefined ? { durationMs: coldStartBenchmark.startup.durationMs } : {}),\n },\n } : {}),\n };\n}\n\nasync function runPostgresColdStartFirstQuery(\n engine: RdfEngineLike,\n queryCases: readonly RdfModelQueryBenchmarkCase[],\n): Promise<RdfModelPostgresColdStartQueryBenchmark | undefined> {\n const testCase = selectPostgresColdStartQueryCase(queryCases);\n if (!testCase) {\n return undefined;\n }\n\n const query = {\n ...testCase.query,\n cache: {\n ...(testCase.query.cache ?? {}),\n mode: 'bypass' as const,\n },\n };\n const startedAt = Date.now();\n const result = await engine.query(query);\n const durationMs = Math.max(0, Date.now() - startedAt);\n const keys = result.bindings.map(bindingKey);\n const missingPlan = missingExpectedQueryPlan(testCase, result.metrics, keys.length);\n\n return {\n queryCase: testCase.name,\n durationMs,\n planMatched: missingPlan.length === 0,\n missingPlan,\n physicalPlan: result.metrics.plan,\n indexChoices: result.metrics.indexChoices,\n scannedRows: result.metrics.scannedRows,\n returnedRows: keys.length,\n cacheMode: 'bypass',\n };\n}\n\nfunction selectPostgresColdStartQueryCase(\n queryCases: readonly RdfModelQueryBenchmarkCase[],\n): RdfModelQueryBenchmarkCase | undefined {\n return queryCases.find((testCase) => testCase.benchmarkCache !== 'preserve') ?? queryCases[0];\n}\n\nfunction postgresColdStartBenchmark(\n storageBefore: RdfEngineStorageStats,\n firstQueryAfterRefresh: RdfModelPostgresColdStartQueryBenchmark | undefined,\n queryResults: readonly RdfModelQueryBenchmarkResult[],\n warmupIterations: number,\n): RdfModelPostgresColdStartBenchmark | undefined {\n const lifecycle = storageBefore.lifecycle;\n const startup = lifecycle\n ? {\n status: lifecycle.status,\n ...(lifecycle.driver ? { driver: lifecycle.driver } : {}),\n openCount: lifecycle.openCount,\n ...(lifecycle.coldStart?.startedAt ? { startedAt: lifecycle.coldStart.startedAt } : {}),\n ...(lifecycle.coldStart?.readyAt ? { readyAt: lifecycle.coldStart.readyAt } : {}),\n ...(lifecycle.coldStart?.durationMs !== undefined ? { durationMs: lifecycle.coldStart.durationMs } : {}),\n phases: lifecycle.coldStart?.phases ?? [],\n }\n : undefined;\n const warmResult = firstQueryAfterRefresh\n ? queryResults.find((result) => result.name === firstQueryAfterRefresh.queryCase)\n : undefined;\n const warmSteadyState = warmResult\n ? {\n queryCase: warmResult.name,\n iterations: warmResult.durationsMs.length,\n warmupIterations,\n durationsMs: warmResult.durationsMs,\n p50DurationMs: warmResult.p50DurationMs,\n p95DurationMs: warmResult.p95DurationMs,\n planMatched: warmResult.planMatched,\n returnedRows: warmResult.returnedRows,\n }\n : undefined;\n if (!startup && !firstQueryAfterRefresh && !warmSteadyState) {\n return undefined;\n }\n return {\n ...(startup ? { startup } : {}),\n ...(firstQueryAfterRefresh ? { firstQueryAfterRefresh } : {}),\n ...(warmSteadyState ? { warmSteadyState } : {}),\n };\n}\n\nfunction postgresRefreshBenchmark(\n refresh: RdfDerivedIndexRefreshResult,\n durationMs: number,\n): RdfModelPostgresRefreshBenchmark {\n const rdf3x = refresh.rdf3x;\n return {\n durationMs,\n refreshed: rdf3x?.refreshed ?? false,\n previousFactsDataVersion: rdf3x?.previousFactsDataVersion,\n factsDataVersion: rdf3x?.factsDataVersion ?? refresh.factsDataVersion,\n syncedWithFacts: rdf3x?.syncedWithFacts,\n rebuildMode: rdf3x?.rebuild?.mode,\n dirtyGraphs: rdf3x?.rebuild && 'dirtyGraphs' in rdf3x.rebuild ? rdf3x.rebuild.dirtyGraphs : undefined,\n dirtyPairs: rdf3x?.rebuild && 'dirtyPairs' in rdf3x.rebuild ? rdf3x.rebuild.dirtyPairs : undefined,\n dirtyTerms: rdf3x?.rebuild && 'dirtyTerms' in rdf3x.rebuild ? rdf3x.rebuild.dirtyTerms : undefined,\n plannerStatsDurationMs: rdf3x?.plannerStats?.durationMs,\n analyzedTables: rdf3x?.plannerStats?.analyzedTables,\n sourceQueue: rdf3x?.sourceQueue,\n };\n}\n\nasync function runPostWriteRefreshBenchmark(\n engine: RdfEngineLike,\n mutationSources: number,\n mutationQuadsPerSource: number,\n): Promise<RdfModelPostgresPostWriteRefreshBenchmark> {\n let mutationQuads = 0;\n for (let index = 0; index < mutationSources; index += 1) {\n const mutation = rdfModelsRefreshMutationSource(index, mutationQuadsPerSource);\n mutationQuads += mutation.quads.length;\n await engine.replaceSource(mutation.quads, mutation.source);\n }\n\n const storageBeforeRefresh = await engine.storageStats();\n const refreshStartedAt = Date.now();\n const refresh = await engine.refreshDerivedIndexes();\n const benchmark = {\n ...postgresRefreshBenchmark(refresh, Date.now() - refreshStartedAt),\n mutationSources,\n mutationQuadsPerSource,\n mutationQuads,\n pendingSourcesBeforeRefresh: storageBeforeRefresh.rdf3x?.pendingSources ?? 0,\n factsDataVersionBeforeRefresh: storageBeforeRefresh.rdf3x?.factsDataVersion,\n };\n const failedReasons = postWriteRefreshFailedReasons(benchmark);\n return {\n ...benchmark,\n matched: failedReasons.length === 0,\n failedReasons,\n };\n}\n\nfunction postWriteRefreshFailedReasons(\n benchmark: Omit<RdfModelPostgresPostWriteRefreshBenchmark, 'matched' | 'failedReasons'>,\n): string[] {\n const failedReasons: string[] = [];\n if (benchmark.pendingSourcesBeforeRefresh !== benchmark.mutationSources) {\n failedReasons.push('pending-sources-before-refresh-mismatch');\n }\n if (benchmark.sourceQueue?.pendingSources !== benchmark.mutationSources) {\n failedReasons.push('source-queue-pending-mismatch');\n }\n if (benchmark.sourceQueue?.drainedSources !== benchmark.mutationSources) {\n failedReasons.push('source-queue-drained-mismatch');\n }\n if (benchmark.refreshed !== true) {\n failedReasons.push('not-refreshed');\n }\n if (benchmark.syncedWithFacts !== true) {\n failedReasons.push('not-synced-with-facts');\n }\n if (benchmark.rebuildMode !== 'incremental') {\n failedReasons.push('not-incremental-rebuild');\n }\n if (benchmark.factsDataVersionBeforeRefresh === undefined) {\n failedReasons.push('missing-facts-data-version-before-refresh');\n }\n if (benchmark.factsDataVersion !== benchmark.factsDataVersionBeforeRefresh) {\n failedReasons.push('facts-data-version-mismatch');\n }\n return failedReasons;\n}\n\nfunction rdfModelsRefreshMutationSource(index: number, quadsPerSource: number): {\n quads: Quad[];\n source: {\n source: string;\n workspace: string;\n localPath: string;\n contentType: string;\n sourceVersion: string;\n };\n} {\n const ordinal = index + 1;\n const graph = `${DATA}/task/default/2026/05/19/refresh-mutation-${ordinal}.ttl`;\n const run = `${graph}#run_${ordinal}`;\n const step = `${graph}#step_${ordinal}`;\n const thread = `${DATA}/task/default/index.ttl#thread_1`;\n const allQuads = [\n seedQuad(run, RDF_TYPE, iri(`${UDFS}Run`), graph),\n seedQuad(run, `${UDFS}status`, literal(index % 2 === 0 ? 'queued' : 'running'), graph),\n seedQuad(run, `${UDFS}workspace`, iri(WORKSPACE), graph),\n seedQuad(run, `${UDFS}priority`, literal(String((index % 20) + 1), iri(XSD_INTEGER)), graph),\n seedQuad(run, `${UDFS}inThread`, iri(thread), graph),\n seedQuad(run, DCT_CREATED, literal(new Date(Date.UTC(2026, 4, 19, 0, 0, index)).toISOString()), graph),\n seedQuad(step, RDF_TYPE, iri(`${UDFS}RunStep`), graph),\n seedQuad(step, `${UDFS}run`, iri(run), graph),\n seedQuad(step, `${UDFS}status`, literal('run.refresh_mutation'), graph),\n seedQuad(step, DCT_CREATED, literal(new Date(Date.UTC(2026, 4, 19, 0, 1, index)).toISOString()), graph),\n ];\n const quads = allQuads.slice(0, Math.max(1, Math.min(allQuads.length, Math.floor(quadsPerSource))));\n return {\n quads,\n source: {\n source: graph,\n workspace: RDF_MODELS_BENCHMARK_POD,\n localPath: `/.data/task/default/2026/05/19/refresh-mutation-${ordinal}.ttl`,\n contentType: 'text/turtle',\n sourceVersion: `refresh-mutation-${ordinal}`,\n },\n };\n}\n\nasync function runPostgresConcurrencyGate(\n engine: RdfEngineLike,\n queryCases: readonly RdfModelQueryBenchmarkCase[],\n baselineResults: readonly RdfModelQueryBenchmarkResult[],\n concurrency: number,\n indexStats: RdfIndexStats,\n): Promise<RdfModelPostgresConcurrencyGate> {\n if (concurrency <= 1) {\n return {\n enabled: false,\n concurrency,\n cases: [],\n matched: true,\n failedCases: [],\n };\n }\n\n const baselineByName = new Map(baselineResults.map((result) => [result.name, result]));\n const selectedCases = selectPostgresConcurrencyGateCases(queryCases, baselineByName);\n const cases: RdfModelPostgresConcurrencyGateCase[] = [];\n\n for (const testCase of selectedCases) {\n const baseline = baselineByName.get(testCase.name);\n if (!baseline) {\n cases.push({\n name: testCase.name,\n concurrency,\n iterationsPerLane: 1,\n matched: false,\n planMatched: false,\n expectedReturnedRows: 0,\n returnedRows: [],\n expectedChecksum: '',\n checksums: [],\n expectedOrderedChecksum: '',\n orderedChecksums: [],\n missingPlan: ['missing serial benchmark baseline'],\n durationsMs: [],\n p50DurationMs: 0,\n p95DurationMs: 0,\n });\n continue;\n }\n\n const laneResults = await Promise.all(Array.from({ length: concurrency }, () => (\n runAsyncQueryBenchmarkCase(engine, testCase, 1, indexStats, 0)\n )));\n const returnedRows = laneResults.map((result) => result.returnedRows);\n const checksums = laneResults.map((result) => result.checksum);\n const orderedChecksums = laneResults.map((result) => result.orderedChecksum);\n const durationsMs = laneResults.flatMap((result) => result.durationsMs);\n const missingPlan = [...new Set(laneResults.flatMap((result) => result.missingPlan))];\n const planMatched = laneResults.every((result) => result.planMatched);\n const matched = planMatched\n && returnedRows.every((rowCount) => rowCount === baseline.returnedRows)\n && checksums.every((value) => value === baseline.checksum)\n && orderedChecksums.every((value) => value === baseline.orderedChecksum);\n\n cases.push({\n name: testCase.name,\n concurrency,\n iterationsPerLane: 1,\n matched,\n planMatched,\n expectedReturnedRows: baseline.returnedRows,\n returnedRows,\n expectedChecksum: baseline.checksum,\n checksums,\n expectedOrderedChecksum: baseline.orderedChecksum,\n orderedChecksums,\n missingPlan,\n durationsMs,\n p50DurationMs: percentile(durationsMs, 0.5),\n p95DurationMs: percentile(durationsMs, 0.95),\n });\n }\n\n const failedCases = cases.filter((result) => !result.matched).map((result) => result.name);\n return {\n enabled: true,\n concurrency,\n cases,\n matched: failedCases.length === 0,\n failedCases,\n };\n}\n\nfunction postgresServingBenchmarkResultsForGate(\n caseProfile: RdfBenchmarkCaseProfile,\n queryResults: readonly RdfModelQueryBenchmarkResult[],\n): readonly RdfModelQueryBenchmarkResult[] | undefined {\n if (caseProfile === 'default') {\n return queryResults;\n }\n if (caseProfile !== 'all') {\n return undefined;\n }\n const servingCaseNames = new Set(rdfModelsPostgresQueryBenchmarkCasesForProfile('default').map((testCase) => testCase.name));\n return queryResults.filter((result) => servingCaseNames.has(result.name));\n}\n\nfunction postgresFusionBenchmarkResultsForGate(\n caseProfile: RdfBenchmarkCaseProfile,\n queryResults: readonly RdfModelQueryBenchmarkResult[],\n): readonly RdfModelQueryBenchmarkResult[] | undefined {\n if (caseProfile === 'fusion') {\n return queryResults;\n }\n if (caseProfile !== 'all') {\n return undefined;\n }\n const fusionCaseNames = new Set(rdfModelsSearchFusionQueryBenchmarkCaseNames());\n return queryResults.filter((result) => fusionCaseNames.has(result.name));\n}\n\nfunction runPostgresServingRegressionGate(\n caseProfile: RdfBenchmarkCaseProfile,\n queryResults: readonly RdfModelQueryBenchmarkResult[],\n thresholds?: RdfModelPostgresBenchmarkGateThresholds,\n): RdfModelPostgresServingRegressionGate {\n const gateResults = postgresServingBenchmarkResultsForGate(caseProfile, queryResults);\n if (!gateResults) {\n return {\n enabled: false,\n caseProfile,\n ...(thresholds ? { thresholds } : {}),\n cases: [],\n matched: true,\n failedCases: [],\n };\n }\n\n const cases = gateResults.map((result) => postgresServingRegressionGateCase(result, thresholds));\n const failedCases = cases.filter((result) => !result.matched).map((result) => result.name);\n return {\n enabled: true,\n caseProfile,\n ...(thresholds ? { thresholds } : {}),\n cases,\n matched: failedCases.length === 0,\n failedCases,\n };\n}\n\nfunction postgresServingRegressionGateCase(\n result: RdfModelQueryBenchmarkResult,\n thresholds?: RdfModelPostgresBenchmarkGateThresholds,\n): RdfModelPostgresServingRegressionGateCase {\n const failedReasons = postgresServingRegressionFailures(result, benchmarkGateThresholdsForCase(thresholds, result.name));\n return {\n name: result.name,\n matched: failedReasons.length === 0,\n planMatched: result.planMatched,\n expectedPlan: [...result.expectedPlan],\n missingPlan: [...result.missingPlan],\n failedReasons,\n physicalPlan: [...result.physicalPlan],\n scannedRows: result.scannedRows,\n returnedRows: result.returnedRows,\n p95DurationMs: result.p95DurationMs,\n };\n}\n\nexport function postgresServingRegressionFailures(\n result: RdfModelQueryBenchmarkResult,\n thresholds?: RdfModelPostgresBenchmarkGateThresholds,\n): string[] {\n const resolvedThresholds = benchmarkGateThresholdsForCase(thresholds, result.name);\n const failedReasons = [...result.missingPlan];\n const planText = result.physicalPlan.join('\\n');\n const numericAggregate = result.expectedPlan.includes('numeric-aggregate')\n || result.expectedPlan.includes('numeric-aggregate-facts-cutover');\n const allowedFactsCutover = numericAggregate\n && planText.includes('PostgresNumericAggregateFactsCutover(');\n\n if (!result.planMatched) {\n failedReasons.push('plan-mismatch');\n }\n if (!allowedFactsCutover && planText.includes('PostgresFactsQuery')) {\n failedReasons.push('facts-query-fallback');\n }\n if (!allowedFactsCutover\n && !planText.includes('PostgresRdf3x')\n && !planText.includes('PostgresMaterializedResultHit')\n && !planText.includes('PostgresRdfNativeCustomIndex')) {\n failedReasons.push('missing-rdf3x-serving-path');\n }\n if (resolvedThresholds?.maxScannedRows !== undefined && result.scannedRows > resolvedThresholds.maxScannedRows) {\n failedReasons.push('scanned-rows-threshold');\n }\n if (resolvedThresholds?.maxP95DurationMs !== undefined\n && result.p95DurationMs > resolvedThresholds.maxP95DurationMs\n && !servingP95RegressionCoveredByOutlierBudget(result, resolvedThresholds)) {\n failedReasons.push('p95-duration-threshold');\n }\n return [...new Set(failedReasons)];\n}\n\nfunction servingP95RegressionCoveredByOutlierBudget(\n result: RdfModelQueryBenchmarkResult,\n thresholds: RdfModelPostgresBenchmarkGateCaseThresholds,\n): boolean {\n if (thresholds.maxP95DurationMs === undefined || thresholds.maxDurationMs === undefined) {\n return false;\n }\n if (!result.planMatched || result.missingPlan.length > 0) {\n return false;\n }\n if (thresholds.maxScannedRows !== undefined && result.scannedRows > thresholds.maxScannedRows) {\n return false;\n }\n if (result.p50DurationMs > thresholds.maxP95DurationMs) {\n return false;\n }\n return maxBenchmarkDurationMs(result) <= thresholds.maxDurationMs;\n}\n\nfunction maxBenchmarkDurationMs(result: RdfModelQueryBenchmarkResult): number {\n return Math.max(result.p95DurationMs, ...result.durationsMs);\n}\n\nfunction runPostgresFusionBenchmarkGate(\n caseProfile: RdfBenchmarkCaseProfile,\n queryResults: readonly RdfModelQueryBenchmarkResult[],\n thresholds?: RdfModelPostgresBenchmarkGateThresholds,\n baselines?: Readonly<Record<string, RdfModelPostgresBenchmarkGateBaseline>>,\n): RdfModelPostgresFusionBenchmarkGate {\n const gateResults = postgresFusionBenchmarkResultsForGate(caseProfile, queryResults);\n if (!gateResults) {\n return {\n enabled: false,\n caseProfile,\n ...(thresholds ? { thresholds } : {}),\n cases: [],\n matched: true,\n failedCases: [],\n };\n }\n\n const cases = gateResults.map((result) => postgresFusionBenchmarkGateCase(\n result,\n thresholds,\n baselines?.[result.name],\n ));\n const failedCases = cases.filter((result) => !result.matched).map((result) => result.name);\n return {\n enabled: true,\n caseProfile,\n ...(thresholds ? { thresholds } : {}),\n cases,\n matched: failedCases.length === 0,\n failedCases,\n };\n}\n\nconst POSTGRES_FUSION_BATCH_GATE_MIN_CANDIDATE_ROWS = 33;\n\nfunction postgresFusionBenchmarkGateCase(\n result: RdfModelQueryBenchmarkResult,\n thresholds?: RdfModelPostgresBenchmarkGateThresholds,\n baseline?: RdfModelPostgresBenchmarkGateBaseline,\n): RdfModelPostgresFusionBenchmarkGateCase {\n const planText = result.physicalPlan.join('\\n');\n const candidateSources = postgresFusionCandidateSources(planText);\n const sourceEstimateCount = result.physicalPlan\n .filter((entry) => entry.startsWith('SourceEstimate('))\n .length;\n const sourceChoiceCount = result.physicalPlan\n .filter((entry) => entry.startsWith('PostgresPlannerSourceChoice('))\n .length;\n const hardFiltersBeforeRank = planText.includes('FusionHardFiltersBeforeRank(path,acl,output:?fusionScore)');\n const rankInputs = planText.includes('FusionRankInputs(text:?textScore,vector:?vectorScore,output:?fusionScore)');\n const rankWeights = planText.includes('FusionRankWeights(text:0.55,vector:0.45,output:?fusionScore)');\n const rankTieBreaker = planText.includes('FusionRankTieBreaker(asc:?message)');\n const resultCacheBypassed = !planText.includes('PostgresResultCache');\n const broadCandidateRows = postgresFusionBroadCandidateRows(result.physicalPlan);\n const batchedBroadCandidateJoin = postgresFusionBatchedBroadCandidateJoin(planText);\n const baselineComparison = baseline\n ? postgresBenchmarkBaselineComparison(result, baseline)\n : undefined;\n const failedReasons = postgresFusionBenchmarkFailures({\n result,\n candidateSources,\n sourceEstimateCount,\n sourceChoiceCount,\n hardFiltersBeforeRank,\n rankInputs,\n rankWeights,\n rankTieBreaker,\n resultCacheBypassed,\n broadCandidateRows,\n batchedBroadCandidateJoin,\n thresholds: benchmarkGateThresholdsForCase(thresholds, result.name),\n baselineComparison,\n });\n\n return {\n name: result.name,\n matched: failedReasons.length === 0,\n planMatched: result.planMatched,\n failedReasons,\n ...(baselineComparison ? { baselineComparison } : {}),\n candidateSources,\n sourceEstimateCount,\n sourceChoiceCount,\n hardFiltersBeforeRank,\n rankInputs,\n rankWeights,\n rankTieBreaker,\n resultCacheBypassed,\n broadCandidateRows,\n batchedBroadCandidateJoin,\n scannedRows: result.scannedRows,\n returnedRows: result.returnedRows,\n p95DurationMs: result.p95DurationMs,\n };\n}\n\nfunction postgresFusionCandidateSources(planText: string): string[] {\n const sources = [\n 'TextMatchSource',\n 'VectorMatchSource',\n 'RdfBgpSource',\n 'PathScopeSource',\n 'AclScopeSource',\n ];\n return sources.filter((source) => (\n planText.includes(`${source}(`)\n || planText.includes(`SourceEstimate(${source}#`)\n ));\n}\n\n\nfunction postgresFusionBroadCandidateRows(physicalPlan: readonly string[]): number {\n return Math.max(0, ...physicalPlan\n .map((entry) => {\n const match = /^SourceEstimate\\((?:TextMatchSource|VectorMatchSource)#\\d+ rows:(\\d+)\\b/.exec(entry);\n return match ? Number(match[1]) : 0;\n })\n .filter((value) => Number.isFinite(value)));\n}\n\nfunction postgresFusionBatchedBroadCandidateJoin(planText: string): boolean {\n return planText.includes('PostgresFactsBatchScan(')\n && planText.includes('PostgresFactsSearchBatchSource(');\n}\n\nfunction postgresFusionBenchmarkFailures(input: {\n result: RdfModelQueryBenchmarkResult;\n candidateSources: readonly string[];\n sourceEstimateCount: number;\n sourceChoiceCount: number;\n hardFiltersBeforeRank: boolean;\n rankInputs: boolean;\n rankWeights: boolean;\n rankTieBreaker: boolean;\n resultCacheBypassed: boolean;\n broadCandidateRows: number;\n batchedBroadCandidateJoin: boolean;\n thresholds?: RdfModelPostgresBenchmarkGateThresholds;\n baselineComparison?: RdfModelPostgresBenchmarkGateBaselineComparison;\n}): string[] {\n const requiredSources = [\n 'TextMatchSource',\n 'VectorMatchSource',\n 'RdfBgpSource',\n 'PathScopeSource',\n 'AclScopeSource',\n ];\n const failedReasons = [...input.result.missingPlan];\n\n if (!input.result.planMatched) {\n failedReasons.push('plan-mismatch');\n }\n for (const source of requiredSources) {\n if (!input.candidateSources.includes(source)) {\n failedReasons.push(`missing-source:${source}`);\n }\n }\n if (input.sourceEstimateCount < requiredSources.length) {\n failedReasons.push('missing-source-estimates');\n }\n if (input.sourceChoiceCount < 3) {\n failedReasons.push('missing-source-choice-evidence');\n }\n if (!input.hardFiltersBeforeRank) {\n failedReasons.push('missing-hard-filters-before-rank');\n }\n if (!input.rankInputs) {\n failedReasons.push('missing-rank-inputs');\n }\n if (!input.rankWeights) {\n failedReasons.push('missing-rank-weights');\n }\n if (!input.rankTieBreaker) {\n failedReasons.push('missing-rank-tie-breaker');\n }\n if (!input.resultCacheBypassed) {\n failedReasons.push('result-cache-enabled');\n }\n if (\n input.broadCandidateRows >= POSTGRES_FUSION_BATCH_GATE_MIN_CANDIDATE_ROWS\n && !input.batchedBroadCandidateJoin\n ) {\n failedReasons.push('missing-batched-broad-candidate-join');\n }\n if (input.thresholds?.maxScannedRows !== undefined && input.result.scannedRows > input.thresholds.maxScannedRows) {\n failedReasons.push('scanned-rows-threshold');\n }\n if (input.thresholds?.maxP95DurationMs !== undefined && input.result.p95DurationMs > input.thresholds.maxP95DurationMs) {\n failedReasons.push('p95-duration-threshold');\n }\n if (input.baselineComparison && !input.baselineComparison.matched) {\n failedReasons.push(...input.baselineComparison.failedReasons);\n }\n return [...new Set(failedReasons)];\n}\n\nfunction benchmarkGateThresholdsForCase(\n thresholds: RdfModelPostgresBenchmarkGateThresholds | undefined,\n caseName: string,\n): RdfModelPostgresBenchmarkGateCaseThresholds | undefined {\n if (!thresholds) {\n return undefined;\n }\n const caseThresholds = thresholds.cases?.[caseName];\n if (!caseThresholds) {\n return thresholds;\n }\n return {\n maxScannedRows: caseThresholds.maxScannedRows ?? thresholds.maxScannedRows,\n maxP95DurationMs: caseThresholds.maxP95DurationMs ?? thresholds.maxP95DurationMs,\n maxDurationMs: caseThresholds.maxDurationMs ?? thresholds.maxDurationMs,\n };\n}\n\nfunction postgresBenchmarkBaselineComparison(\n result: RdfModelQueryBenchmarkResult,\n baseline: RdfModelPostgresBenchmarkGateBaseline,\n): RdfModelPostgresBenchmarkGateBaselineComparison {\n const failedReasons: string[] = [];\n const comparison: RdfModelPostgresBenchmarkGateBaselineComparison = {\n ...(baseline.label ? { label: baseline.label } : {}),\n matched: true,\n failedReasons,\n };\n\n if (baseline.p95DurationMs !== undefined) {\n comparison.p95DurationMsBaseline = baseline.p95DurationMs;\n comparison.maxP95DurationMs = baseline.maxP95DurationMs ?? baseline.p95DurationMs;\n comparison.p95DurationMsDelta = result.p95DurationMs - baseline.p95DurationMs;\n comparison.p95DurationMsRatio = ratio(result.p95DurationMs, baseline.p95DurationMs);\n if (result.p95DurationMs > comparison.maxP95DurationMs) {\n failedReasons.push('baseline-p95-regression');\n }\n }\n if (baseline.scannedRows !== undefined) {\n comparison.scannedRowsBaseline = baseline.scannedRows;\n comparison.maxScannedRows = baseline.maxScannedRows ?? baseline.scannedRows;\n comparison.scannedRowsDelta = result.scannedRows - baseline.scannedRows;\n comparison.scannedRowsRatio = ratio(result.scannedRows, baseline.scannedRows);\n if (result.scannedRows > comparison.maxScannedRows) {\n failedReasons.push('baseline-scanned-rows-regression');\n }\n }\n comparison.matched = failedReasons.length === 0;\n return comparison;\n}\n\nfunction selectPostgresConcurrencyGateCases(\n queryCases: readonly RdfModelQueryBenchmarkCase[],\n baselineByName: ReadonlyMap<string, RdfModelQueryBenchmarkResult>,\n): RdfModelQueryBenchmarkCase[] {\n const preferred = POSTGRES_CONCURRENCY_GATE_QUERY_CASE_NAMES\n .map((name) => queryCases.find((testCase) => testCase.name === name))\n .filter((testCase): testCase is RdfModelQueryBenchmarkCase => Boolean(testCase))\n .filter((testCase) => baselineByName.has(testCase.name));\n if (preferred.length > 0) {\n return preferred;\n }\n return queryCases\n .filter((testCase) => baselineByName.has(testCase.name))\n .slice(0, Math.min(4, queryCases.length));\n}\n\nexport async function runRdfModelsShadowBenchmark(\n engine: SolidRdfEngine,\n compatibilityStore: QuintStore,\n options: RdfModelShadowBenchmarkRunOptions = {},\n): Promise<RdfModelShadowBenchmarkReport> {\n const scale = options.scale ?? 'small';\n const iterations = Math.max(1, Math.floor(options.iterations ?? 1));\n const caseProfile = options.caseProfile ?? 'default';\n const cases = (options.cases ?? rdfModelsBenchmarkCasesForProfile(caseProfile))\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const results = [];\n const compatibilityStats = await compatibilityStore.stats();\n\n for (const testCase of cases) {\n results.push(await runShadowBenchmarkCase(engine, compatibilityStore, testCase, iterations, compatibilityStats));\n }\n const spaceGateEnforced = scaleRank(scale) >= scaleRank('medium');\n const failedPerformanceCases = results.filter((result) => !result.performance.matched).map((result) => result.name);\n const failedSpaceCases = spaceGateEnforced\n ? results.filter((result) => !result.space.matched).map((result) => result.name)\n : [];\n\n return {\n engine: 'shadow',\n compatibilityEngine: 'quint-store',\n candidateEngine: 'solid-rdf',\n scale,\n caseProfile,\n iterations,\n generatedAt: new Date().toISOString(),\n matched: results.every((result) => result.matched),\n orderedMatched: results.every((result) => result.orderedMatch),\n planMatched: results.every((result) => result.planMatched),\n spaceGateEnforced,\n performanceMatched: failedPerformanceCases.length === 0,\n spaceMatched: failedSpaceCases.length === 0,\n failedPlanCases: results.filter((result) => !result.planMatched).map((result) => result.name),\n failedPerformanceCases,\n failedSpaceCases,\n cases: results,\n };\n}\n\nexport function runRdfModelsRdf3xShadowBenchmark(\n engine: SolidRdfEngine,\n options: RdfModelBenchmarkRunOptions = {},\n): RdfModelRdf3xShadowBenchmarkReport {\n if (!engine.rdf3xIndex) {\n throw new Error('runRdfModelsRdf3xShadowBenchmark requires SolidRdfEngine.rdf3xIndex');\n }\n const scale = options.scale ?? 'small';\n const iterations = Math.max(1, Math.floor(options.iterations ?? 1));\n const caseProfile = options.caseProfile ?? 'default';\n const cases = (options.cases ?? rdfModelsBenchmarkCasesForProfile(caseProfile))\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const queryCases = (options.queryCases ?? rdfModelsQueryBenchmarkCasesForProfile(caseProfile))\n .filter((testCase) => scaleRank(testCase.minScale) <= scaleRank(scale));\n const rebuild = engine.rdf3xIndex.rebuildFromCurrentQuads();\n const results = cases.map((testCase) => runRdf3xShadowBenchmarkCase(engine, testCase, iterations));\n const joinResults = queryCases.map((testCase) => runRdf3xShadowJoinBenchmarkCase(engine, testCase, iterations));\n const supportedResults = results.filter((result) => result.supported);\n const supportedJoinResults = joinResults.filter((result) => result.supported);\n const failedPlanCases = [\n ...supportedResults.filter((result) => !result.planMatched).map((result) => result.name),\n ...supportedJoinResults.filter((result) => !result.planMatched).map((result) => result.name),\n ];\n\n return {\n engine: 'rdf3x-shadow',\n primaryEngine: 'solid-rdf',\n candidateEngine: 'solid-rdf3x',\n scale,\n caseProfile,\n iterations,\n generatedAt: new Date().toISOString(),\n matched: supportedResults.every((result) => result.matched)\n && supportedJoinResults.every((result) => result.matched),\n orderedMatched: supportedResults.every((result) => result.orderedMatch)\n && supportedJoinResults.every((result) => result.orderedMatch),\n planMatched: failedPlanCases.length === 0,\n skippedCases: results.filter((result) => !result.supported).map((result) => result.name),\n skippedJoinCases: joinResults.filter((result) => !result.supported).map((result) => result.name),\n failedCases: supportedResults.filter((result) => !result.matched || !result.orderedMatch).map((result) => result.name),\n failedJoinCases: supportedJoinResults\n .filter((result) => !result.matched || !result.orderedMatch)\n .map((result) => result.name),\n failedPlanCases,\n rebuild,\n storage: engine.storageStats(),\n cases: results,\n joinCases: joinResults,\n };\n}\n\nfunction runBenchmarkCase(\n engine: SolidRdfEngine,\n testCase: RdfModelBenchmarkCase,\n iterations: number,\n): RdfModelBenchmarkResult {\n const durationsMs: number[] = [];\n let metrics: RdfIndexMetrics | undefined;\n let keys: string[] = [];\n\n for (let i = 0; i < iterations; i += 1) {\n const start = Date.now();\n const result = engine.scan(testCase.query);\n durationsMs.push(Math.max(0, Date.now() - start));\n metrics = result.metrics;\n keys = result.quads.map(canonicalQuadKey);\n }\n\n const finalMetrics = metrics ?? {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n const missingPlan = missingExpectedPlan(testCase, finalMetrics);\n const execution = benchmarkExecution(finalMetrics);\n\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: {\n pattern: serializePattern(testCase.query.pattern),\n ...(testCase.query.options ? { options: testCase.query.options } : {}),\n },\n expectedPlan: [...testCase.expectedPlan],\n planMatched: missingPlan.length === 0,\n missingPlan,\n ...execution,\n returnedRows: keys.length,\n checksum: checksum(keys, false),\n orderedChecksum: checksum(keys, true),\n durationsMs,\n p50DurationMs: percentile(durationsMs, 0.5),\n p95DurationMs: percentile(durationsMs, 0.95),\n metrics: finalMetrics,\n indexStats: engine.index.stats(),\n };\n}\n\nfunction runQueryBenchmarkCase(\n engine: SolidRdfEngine,\n testCase: RdfModelQueryBenchmarkCase,\n iterations: number,\n): RdfModelQueryBenchmarkResult {\n const durationsMs: number[] = [];\n let metrics: RdfQueryMetrics | undefined;\n let keys: string[] = [];\n\n for (let i = 0; i < iterations; i += 1) {\n const start = Date.now();\n const result = engine.query(testCase.query);\n durationsMs.push(Math.max(0, Date.now() - start));\n metrics = result.metrics;\n keys = result.bindings.map(bindingKey);\n }\n\n const finalMetrics = metrics ?? {\n engine: 'solid-rdf',\n plan: [],\n scannedRows: 0,\n joinedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n indexChoices: [],\n filtersApplied: 0,\n filtersPushedDown: 0,\n };\n const missingPlan = missingExpectedQueryPlan(testCase, finalMetrics, keys.length);\n\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: serializeQueryPlan(testCase.query),\n expectedPlan: [...testCase.expectedPlan],\n planMatched: missingPlan.length === 0,\n missingPlan,\n physicalPlan: finalMetrics.plan,\n scannedRows: finalMetrics.scannedRows,\n indexChoices: [...finalMetrics.indexChoices],\n fallbackReason: null,\n returnedRows: keys.length,\n checksum: checksum(keys, false),\n orderedChecksum: checksum(keys, true),\n durationsMs,\n p50DurationMs: percentile(durationsMs, 0.5),\n p95DurationMs: percentile(durationsMs, 0.95),\n metrics: finalMetrics,\n indexStats: engine.index.stats(),\n };\n}\n\nasync function runAsyncBenchmarkCase(\n engine: RdfEngineLike,\n testCase: RdfModelBenchmarkCase,\n iterations: number,\n indexStats: RdfIndexStats,\n warmupIterations = 0,\n): Promise<RdfModelBenchmarkResult> {\n const durationsMs: number[] = [];\n let metrics: RdfIndexMetrics | undefined;\n let keys: string[] = [];\n\n for (let i = 0; i < warmupIterations; i += 1) {\n await engine.scan(testCase.query);\n }\n\n for (let i = 0; i < iterations; i += 1) {\n const start = Date.now();\n const result = await engine.scan(testCase.query);\n durationsMs.push(Math.max(0, Date.now() - start));\n metrics = result.metrics;\n keys = result.quads.map(canonicalQuadKey);\n }\n\n const finalMetrics = metrics ?? {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n const missingPlan = missingExpectedPlan(testCase, finalMetrics);\n const execution = benchmarkExecution(finalMetrics);\n\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: {\n pattern: serializePattern(testCase.query.pattern),\n ...(testCase.query.options ? { options: testCase.query.options } : {}),\n },\n expectedPlan: [...testCase.expectedPlan],\n planMatched: missingPlan.length === 0,\n missingPlan,\n ...execution,\n returnedRows: keys.length,\n checksum: checksum(keys, false),\n orderedChecksum: checksum(keys, true),\n durationsMs,\n p50DurationMs: percentile(durationsMs, 0.5),\n p95DurationMs: percentile(durationsMs, 0.95),\n metrics: finalMetrics,\n indexStats,\n };\n}\n\nasync function runAsyncQueryBenchmarkCase(\n engine: RdfEngineLike,\n testCase: RdfModelQueryBenchmarkCase,\n iterations: number,\n indexStats: RdfIndexStats,\n warmupIterations = 0,\n): Promise<RdfModelQueryBenchmarkResult> {\n const durationsMs: number[] = [];\n let metrics: RdfQueryMetrics | undefined;\n let keys: string[] = [];\n const query = asyncBenchmarkQueryFor(testCase);\n const effectiveWarmupIterations = Math.max(\n warmupIterations,\n Math.max(0, Math.floor(testCase.minWarmupIterations ?? 0)),\n );\n\n for (let i = 0; i < effectiveWarmupIterations; i += 1) {\n await engine.query(query);\n }\n\n for (let i = 0; i < iterations; i += 1) {\n const start = Date.now();\n const result = await engine.query(query);\n durationsMs.push(Math.max(0, Date.now() - start));\n metrics = result.metrics;\n keys = result.bindings.map(bindingKey);\n }\n\n const finalMetrics = metrics ?? {\n engine: 'solid-rdf',\n plan: [],\n scannedRows: 0,\n joinedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n indexChoices: [],\n filtersApplied: 0,\n filtersPushedDown: 0,\n };\n const missingPlan = missingExpectedQueryPlan(testCase, finalMetrics, keys.length);\n\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: serializeQueryPlan(query),\n expectedPlan: [...testCase.expectedPlan],\n planMatched: missingPlan.length === 0,\n missingPlan,\n physicalPlan: finalMetrics.plan,\n scannedRows: finalMetrics.scannedRows,\n indexChoices: [...finalMetrics.indexChoices],\n fallbackReason: null,\n returnedRows: keys.length,\n checksum: checksum(keys, false),\n orderedChecksum: checksum(keys, true),\n durationsMs,\n p50DurationMs: percentile(durationsMs, 0.5),\n p95DurationMs: percentile(durationsMs, 0.95),\n metrics: finalMetrics,\n indexStats,\n };\n}\n\nfunction asyncBenchmarkQueryFor(testCase: RdfModelQueryBenchmarkCase): RdfQuery {\n if (testCase.benchmarkCache === 'preserve') {\n return testCase.query;\n }\n return {\n ...testCase.query,\n cache: {\n ...(testCase.query.cache ?? {}),\n mode: 'bypass',\n },\n };\n}\n\nfunction runRdf3xShadowBenchmarkCase(\n engine: SolidRdfEngine,\n testCase: RdfModelBenchmarkCase,\n iterations: number,\n): RdfModelRdf3xShadowBenchmarkResult {\n const baseResult = baseRdf3xShadowBenchmarkResult(testCase);\n const unsupportedReason = unsupportedRdf3xPatternReason(testCase.query.pattern);\n if (unsupportedReason) {\n return {\n ...baseResult,\n supported: false,\n unsupportedReason,\n planMatched: false,\n missingPlan: [unsupportedReason],\n matched: false,\n orderedMatch: false,\n diff: {\n missingFromPrimary: [],\n extraInPrimary: [],\n },\n solidRdf: emptySolidRdfBenchmarkSide(engine),\n };\n }\n\n const solidRdfDurationsMs: number[] = [];\n const rdf3xDurationsMs: number[] = [];\n let solidRdfQuads: Quad[] = [];\n let rdf3xQuads: Quad[] = [];\n let solidRdfMetrics: RdfIndexMetrics | undefined;\n let rdf3xMetrics: Rdf3xIndexMetrics | undefined;\n\n for (let i = 0; i < iterations; i += 1) {\n let start = Date.now();\n const solidRdfResult = engine.scan(testCase.query);\n solidRdfDurationsMs.push(Math.max(0, Date.now() - start));\n solidRdfQuads = solidRdfResult.quads;\n solidRdfMetrics = solidRdfResult.metrics;\n\n start = Date.now();\n const rdf3xResult = engine.rdf3xIndex!.scan(rdf3xPatternFor(testCase.query.pattern), testCase.query.options);\n rdf3xDurationsMs.push(Math.max(0, Date.now() - start));\n rdf3xQuads = rdf3xResult.quads;\n rdf3xMetrics = rdf3xResult.metrics;\n }\n\n const solidRdfKeys = solidRdfQuads.map(canonicalQuadKey);\n const rdf3xKeys = rdf3xQuads.map(canonicalQuadKey);\n const diff = diffQuads(solidRdfQuads, rdf3xQuads);\n const orderedMatch = isSemanticallyOrdered(testCase.query.options)\n ? rdf3xKeys.join('\\n') === solidRdfKeys.join('\\n')\n : true;\n const finalSolidRdfMetrics = solidRdfMetrics ?? {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n const finalRdf3xMetrics = rdf3xMetrics ?? {\n engine: 'solid-rdf3x',\n indexChoice: 'none',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n } satisfies Rdf3xIndexMetrics;\n const missingPlan = missingExpectedRdf3xPlan(testCase, finalRdf3xMetrics);\n const planMatched = missingPlan.length === 0;\n\n return {\n ...baseResult,\n supported: true,\n planMatched,\n missingPlan,\n matched: planMatched && diff.missingFromPrimary.length === 0 && diff.extraInPrimary.length === 0,\n orderedMatch,\n diff,\n solidRdf: {\n ...benchmarkSide(solidRdfKeys, solidRdfDurationsMs),\n ...benchmarkExecution(finalSolidRdfMetrics),\n metrics: finalSolidRdfMetrics,\n indexStats: engine.index.stats(),\n },\n rdf3x: {\n ...benchmarkSide(rdf3xKeys, rdf3xDurationsMs),\n ...rdf3xBenchmarkExecution(finalRdf3xMetrics),\n metrics: finalRdf3xMetrics,\n indexStats: engine.rdf3xIndex!.stats(),\n },\n };\n}\n\nfunction runRdf3xShadowJoinBenchmarkCase(\n engine: SolidRdfEngine,\n testCase: RdfModelQueryBenchmarkCase,\n iterations: number,\n): RdfModelRdf3xShadowJoinBenchmarkResult {\n const unsupportedReason = unsupportedRdf3xJoinQueryReason(testCase.query);\n if (unsupportedReason) {\n return {\n ...baseRdf3xShadowJoinBenchmarkResult(testCase),\n supported: false,\n unsupportedReason,\n planMatched: false,\n missingPlan: [unsupportedReason],\n matched: false,\n orderedMatch: false,\n diff: {\n missingFromPrimary: [],\n extraInPrimary: [],\n },\n solidRdf: emptySolidRdfBenchmarkSide(engine),\n };\n }\n\n const joinShape = rdf3xJoinShapeFor(testCase.query);\n const solidRdfDurationsMs: number[] = [];\n const rdf3xDurationsMs: number[] = [];\n let solidRdfBindings: RdfBindingRow[] = [];\n let rdf3xBindings: RdfBindingRow[] = [];\n let solidRdfMetrics: RdfIndexMetrics | undefined;\n let rdf3xMetrics: Rdf3xJoinMetrics | undefined;\n\n for (let i = 0; i < iterations; i += 1) {\n let start = Date.now();\n const solidRdfResult = runSolidRdfJoinShape(engine, joinShape);\n solidRdfDurationsMs.push(Math.max(0, Date.now() - start));\n solidRdfBindings = solidRdfResult.bindings;\n solidRdfMetrics = solidRdfResult.metrics;\n\n start = Date.now();\n const rdf3xResult = runRdf3xJoinShape(engine, joinShape);\n rdf3xDurationsMs.push(Math.max(0, Date.now() - start));\n rdf3xBindings = rdf3xResult.bindings;\n rdf3xMetrics = rdf3xResult.metrics;\n }\n\n const solidRdfKeys = solidRdfBindings.map(bindingKey);\n const rdf3xKeys = rdf3xBindings.map(bindingKey);\n const diff = diffBindingKeys(solidRdfKeys, rdf3xKeys);\n const orderedMatch = isSemanticallyOrderedRdf3xJoinShape(joinShape)\n ? rdf3xKeys.join('\\n') === solidRdfKeys.join('\\n')\n : true;\n const finalSolidRdfMetrics = solidRdfMetrics ?? {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n const finalRdf3xMetrics = rdf3xMetrics ?? {\n engine: 'solid-rdf3x',\n indexChoice: 'none',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n } satisfies Rdf3xJoinMetrics;\n const missingPlan = [\n ...missingExpectedRdf3xJoinPlan(testCase, finalRdf3xMetrics, rdf3xKeys.length),\n ...unresolvedPlanFailures(finalSolidRdfMetrics.queryPlan ?? []).map((label) => `solid-rdf:${label}`),\n ];\n const planMatched = missingPlan.length === 0;\n\n return {\n ...baseRdf3xShadowJoinBenchmarkResult(testCase),\n supported: true,\n planMatched,\n missingPlan,\n matched: planMatched\n && diff.missingFromPrimary.length === 0\n && diff.extraInPrimary.length === 0,\n orderedMatch,\n diff,\n solidRdf: {\n ...benchmarkSide(solidRdfKeys, solidRdfDurationsMs),\n ...benchmarkExecution(finalSolidRdfMetrics),\n metrics: finalSolidRdfMetrics,\n indexStats: engine.index.stats(),\n },\n rdf3x: {\n ...benchmarkSide(rdf3xKeys, rdf3xDurationsMs),\n ...rdf3xJoinBenchmarkExecution(finalRdf3xMetrics),\n metrics: finalRdf3xMetrics,\n indexStats: engine.rdf3xIndex!.stats(),\n },\n };\n}\n\nfunction runSolidRdfJoinShape(\n engine: SolidRdfEngine,\n shape: Rdf3xJoinBenchmarkShape,\n): { bindings: RdfBindingRow[]; metrics: RdfIndexMetrics } {\n switch (shape.kind) {\n case 'join':\n return engine.index.joinPatterns(shape.patterns, shape.options);\n case 'join-count':\n return engine.index.countJoinPatterns(shape.patterns, shape.options);\n case 'join-aggregate':\n return engine.index.aggregateJoinPatterns(shape.patterns, shape.options);\n case 'group-count':\n return engine.index.groupCountJoinPatterns(shape.patterns, shape.options);\n case 'group-aggregate':\n return engine.index.groupAggregateJoinPatterns(shape.patterns, shape.options);\n default: {\n const exhaustive: never = shape;\n throw new Error(`Unsupported RDF-3X benchmark shape: ${JSON.stringify(exhaustive)}`);\n }\n }\n}\n\nfunction runRdf3xJoinShape(\n engine: SolidRdfEngine,\n shape: Rdf3xJoinBenchmarkShape,\n): { bindings: RdfBindingRow[]; metrics: Rdf3xJoinMetrics } {\n switch (shape.kind) {\n case 'join':\n return engine.rdf3xIndex!.joinPatterns(shape.patterns, shape.options);\n case 'join-count':\n return engine.rdf3xIndex!.countJoinPatterns(shape.patterns, shape.options);\n case 'join-aggregate':\n return engine.rdf3xIndex!.aggregateJoinPatterns(shape.patterns, shape.options);\n case 'group-count':\n return engine.rdf3xIndex!.groupCountJoinPatterns(shape.patterns, shape.options);\n case 'group-aggregate':\n return engine.rdf3xIndex!.groupAggregateJoinPatterns(shape.patterns, shape.options);\n default: {\n const exhaustive: never = shape;\n throw new Error(`Unsupported RDF-3X benchmark shape: ${JSON.stringify(exhaustive)}`);\n }\n }\n}\n\nfunction baseRdf3xShadowBenchmarkResult(testCase: RdfModelBenchmarkCase): Pick<\n RdfModelRdf3xShadowBenchmarkResult,\n 'name' | 'resource' | 'purpose' | 'minScale' | 'query' | 'expectedPlan'\n> {\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: {\n pattern: serializePattern(testCase.query.pattern),\n ...(testCase.query.options ? { options: testCase.query.options } : {}),\n },\n expectedPlan: [...testCase.expectedPlan],\n };\n}\n\nfunction emptySolidRdfBenchmarkSide(engine: SolidRdfEngine): RdfModelRdf3xShadowBenchmarkResult['solidRdf'] {\n const metrics: RdfIndexMetrics = {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n return {\n ...benchmarkSide([], []),\n ...benchmarkExecution(metrics),\n metrics,\n indexStats: engine.index.stats(),\n };\n}\n\nasync function runShadowBenchmarkCase(\n engine: SolidRdfEngine,\n compatibilityStore: QuintStore,\n testCase: RdfModelBenchmarkCase,\n iterations: number,\n compatibilityStats: StoreStats,\n): Promise<RdfModelShadowBenchmarkResult> {\n const compatibilityDurationsMs: number[] = [];\n const solidRdfDurationsMs: number[] = [];\n let compatibilityQuads: Quad[] = [];\n let solidRdfQuads: Quad[] = [];\n let metrics: RdfIndexMetrics | undefined;\n\n for (let i = 0; i < iterations; i += 1) {\n let start = Date.now();\n compatibilityQuads = await compatibilityStore.get(testCase.query.pattern, testCase.query.options);\n compatibilityDurationsMs.push(Math.max(0, Date.now() - start));\n\n start = Date.now();\n const solidRdfResult = engine.scan(testCase.query);\n solidRdfDurationsMs.push(Math.max(0, Date.now() - start));\n solidRdfQuads = solidRdfResult.quads;\n metrics = solidRdfResult.metrics;\n }\n\n const compatibilityKeys = compatibilityQuads.map(canonicalQuadKey);\n const solidRdfKeys = solidRdfQuads.map(canonicalQuadKey);\n const diff = diffQuads(solidRdfQuads, compatibilityQuads);\n const orderedMatch = isSemanticallyOrdered(testCase.query.options)\n ? solidRdfKeys.join('\\n') === compatibilityKeys.join('\\n')\n : true;\n const finalMetrics = metrics ?? {\n engine: 'solid-rdf',\n indexChoice: 'not-run',\n matchedRows: 0,\n returnedRows: 0,\n durationMs: 0,\n };\n const missingPlan = missingExpectedPlan(testCase, finalMetrics);\n const execution = benchmarkExecution(finalMetrics);\n const compatibilitySide = {\n ...benchmarkSide(compatibilityKeys, compatibilityDurationsMs),\n storeStats: compatibilityStats,\n };\n const solidRdfSide = {\n ...benchmarkSide(solidRdfKeys, solidRdfDurationsMs),\n ...execution,\n metrics: finalMetrics,\n indexStats: engine.index.stats(),\n };\n\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: {\n pattern: serializePattern(testCase.query.pattern),\n ...(testCase.query.options ? { options: testCase.query.options } : {}),\n },\n expectedPlan: [...testCase.expectedPlan],\n planMatched: missingPlan.length === 0,\n missingPlan,\n matched: diff.missingFromPrimary.length === 0 && diff.extraInPrimary.length === 0,\n orderedMatch,\n diff,\n compatibility: compatibilitySide,\n solidRdf: solidRdfSide,\n performance: comparePerformance(compatibilitySide, solidRdfSide),\n space: compareSpace(compatibilityStats, solidRdfSide.indexStats),\n };\n}\n\nfunction benchmarkExecution(metrics: RdfIndexMetrics): {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n} {\n return {\n physicalPlan: metrics.queryPlan ?? [],\n scannedRows: metrics.matchedRows,\n indexChoice: metrics.indexChoice,\n joinOrder: [metrics.indexChoice],\n fallbackReason: null,\n };\n}\n\nfunction rdf3xBenchmarkExecution(metrics: Rdf3xIndexMetrics): {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n} {\n return {\n physicalPlan: metrics.queryPlan ?? [],\n scannedRows: metrics.matchedRows,\n indexChoice: metrics.indexChoice,\n joinOrder: [metrics.indexChoice],\n fallbackReason: null,\n };\n}\n\nfunction rdf3xJoinBenchmarkExecution(metrics: Rdf3xJoinMetrics): {\n physicalPlan: string[];\n scannedRows: number;\n indexChoice: string;\n joinOrder: string[];\n fallbackReason: string | null;\n} {\n return {\n physicalPlan: metrics.queryPlan ?? [],\n scannedRows: metrics.matchedRows,\n indexChoice: metrics.indexChoice,\n joinOrder: [metrics.indexChoice],\n fallbackReason: null,\n };\n}\n\nfunction baseRdf3xShadowJoinBenchmarkResult(testCase: RdfModelQueryBenchmarkCase): Pick<\n RdfModelRdf3xShadowJoinBenchmarkResult,\n 'name' | 'resource' | 'purpose' | 'minScale' | 'query' | 'expectedPlan'\n> {\n return {\n name: testCase.name,\n resource: testCase.resource,\n purpose: testCase.purpose,\n minScale: testCase.minScale,\n query: serializeQueryPlan(testCase.query),\n expectedPlan: [...testCase.expectedPlan],\n };\n}\n\nfunction unsupportedRdf3xJoinQueryReason(query: RdfQuery): string | undefined {\n if (query.patterns.length === 0) {\n return 'RDF-3X join shadow requires at least one required BGP pattern';\n }\n if (query.values?.length) {\n return 'RDF-3X join shadow does not support VALUES yet';\n }\n if (query.textSearch?.length || query.vectorSearch?.length) {\n return 'RDF-3X join shadow does not support search sources yet';\n }\n if (query.unions?.length || query.minus?.length || query.exists?.length || query.optional?.length) {\n return 'RDF-3X join shadow only supports required BGP queries';\n }\n if (query.binds?.length) {\n return 'RDF-3X join shadow does not support BIND yet';\n }\n\n const aggregates = queryAggregates(query);\n const visibleVariables = new Set(query.patterns.flatMap((pattern) => variablesInLocalPattern(pattern)));\n const compiled = rdf3xJoinPatternsFor(query, aggregates);\n if (compiled.unsupportedReason) {\n return compiled.unsupportedReason;\n }\n if ((query.filters?.length ?? 0) > 0 && compiled.pushedFilterIndexes.size < (query.filters?.length ?? 0)) {\n return 'RDF-3X join shadow only supports filters that can be fully pushed into RDF-3X patterns';\n }\n\n if (aggregates.length > 0) {\n const aggregateReason = unsupportedRdf3xAggregateReason(query, aggregates, visibleVariables);\n if (aggregateReason) {\n return aggregateReason;\n }\n }\n if (aggregates.length === 0 && (query.groupBy?.length ?? 0) > 0) {\n return 'RDF-3X join shadow does not support GROUP BY without aggregates';\n }\n if (aggregates.length === 0 && (query.having?.length ?? 0) > 0) {\n return 'RDF-3X join shadow does not support HAVING without aggregates';\n }\n return undefined;\n}\n\nfunction rdf3xJoinShapeFor(query: RdfQuery): Rdf3xJoinBenchmarkShape {\n const aggregates = queryAggregates(query);\n const compiled = rdf3xJoinPatternsFor(query, aggregates);\n if (!compiled.patterns) {\n throw new Error(compiled.unsupportedReason ?? 'RDF-3X join shadow cannot compile query shape');\n }\n if ((query.groupBy?.length ?? 0) > 0) {\n const aggregateAliases = new Set(aggregates.map((aggregate) => aggregate.as));\n const having = rdf3xGroupAggregateHaving(query.having ?? [], aggregateAliases);\n return {\n kind: aggregates.every((aggregate) => aggregate.type === 'count') ? 'group-count' : 'group-aggregate',\n patterns: compiled.patterns,\n options: {\n groupBy: query.groupBy ?? [],\n aggregates,\n ...(having.length > 0 ? { having } : {}),\n ...(query.orderBy ? { orderBy: query.orderBy } : {}),\n ...(query.limit !== undefined ? { limit: query.limit } : {}),\n ...(query.offset !== undefined ? { offset: query.offset } : {}),\n },\n };\n }\n if (aggregates.length > 0) {\n return {\n kind: aggregates.every((aggregate) => aggregate.type === 'count') ? 'join-count' : 'join-aggregate',\n patterns: compiled.patterns,\n options: { aggregates },\n };\n }\n return {\n kind: 'join',\n patterns: compiled.patterns,\n options: {\n ...(query.select ? { project: query.select } : {}),\n ...(query.distinct ? { distinct: true } : {}),\n ...(query.orderBy ? { orderBy: query.orderBy } : {}),\n ...(query.limit !== undefined ? { limit: query.limit } : {}),\n ...(query.offset !== undefined ? { offset: query.offset } : {}),\n },\n };\n}\n\nfunction unsupportedRdf3xAggregateReason(\n query: RdfQuery,\n aggregates: RdfQueryAggregate[],\n visibleVariables: Set<string>,\n): string | undefined {\n if ((query.groupBy?.length ?? 0) > 0) {\n if ((query.groupBy ?? []).some((variableName) => !visibleVariables.has(variableName))) {\n return 'RDF-3X join shadow cannot group by variables outside required BGP';\n }\n const aggregateAliases = new Set(aggregates.map((aggregate) => aggregate.as));\n if ((query.orderBy ?? []).some((entry) => !(query.groupBy ?? []).includes(entry.variable) && !aggregateAliases.has(entry.variable))) {\n return 'RDF-3X join shadow cannot order grouped aggregates by unbound variables';\n }\n if (!canCompileRdf3xGroupAggregateHaving(query.having ?? [], aggregateAliases)) {\n return 'RDF-3X join shadow cannot push this grouped HAVING shape';\n }\n } else if ((query.having?.length ?? 0) > 0) {\n return 'RDF-3X join shadow does not support non-grouped HAVING yet';\n } else if (query.orderBy?.length || query.limit !== undefined || query.offset !== undefined || query.distinct) {\n return 'RDF-3X join shadow does not support ORDER/LIMIT/DISTINCT around non-grouped aggregates yet';\n }\n\n for (const aggregate of aggregates) {\n if (aggregate.variable && !visibleVariables.has(aggregate.variable)) {\n return 'RDF-3X join shadow aggregate variable must be bound by required BGP';\n }\n if (aggregate.type !== 'count' && (!aggregate.variable || aggregate.distinct)) {\n return 'RDF-3X join shadow only supports non-distinct numeric aggregates over bound variables';\n }\n }\n return undefined;\n}\n\nfunction rdf3xJoinPatternsFor(query: RdfQuery, aggregates: RdfQueryAggregate[]): {\n patterns?: RdfQuadJoinPattern[];\n pushedFilterIndexes: Set<number>;\n unsupportedReason?: string;\n} {\n const patterns: RdfQuadJoinPattern[] = [];\n const pushedFilterIndexes = new Set<number>();\n const numericAggregateVariables = new Set(aggregates\n .filter((aggregate) => aggregate.type !== 'count')\n .map((aggregate) => aggregate.variable)\n .filter((variableName): variableName is string => Boolean(variableName)));\n for (const pattern of query.patterns) {\n const compiled = rdf3xJoinPatternFor(pattern, query.filters ?? [], numericAggregateVariables);\n const unsupportedPattern = unsupportedRdf3xPatternReason(compiled.pattern);\n if (unsupportedPattern) {\n return {\n pushedFilterIndexes,\n unsupportedReason: unsupportedPattern,\n };\n }\n compiled.pushedFilterIndexes.forEach((index) => pushedFilterIndexes.add(index));\n patterns.push({\n pattern: compiled.pattern,\n variables: compiled.variables,\n });\n }\n return { patterns, pushedFilterIndexes };\n}\n\nfunction rdf3xJoinPatternFor(\n pattern: RdfQueryPattern,\n filters: RdfQueryFilter[],\n numericAggregateVariables: Set<string>,\n): RdfQuadJoinPattern & { pushedFilterIndexes: number[] } {\n const compiledPattern: RdfQuadJoinPattern['pattern'] = {};\n const variables: RdfQuadJoinPattern['variables'] = {};\n const pushedFilterIndexes = new Set<number>();\n for (const key of ['graph', 'subject', 'predicate', 'object'] as RdfQueryPatternKey[]) {\n const value = pattern[key];\n if (!value) {\n continue;\n }\n if (isQueryVariable(value)) {\n variables[key] = value.variable;\n const pushdown = rdf3xBenchmarkPushdownFilter(value.variable, filters, numericAggregateVariables);\n if (pushdown) {\n if (pushdown.pattern !== undefined) {\n compiledPattern[key] = pushdown.pattern;\n }\n pushdown.filterIndexes.forEach((index) => pushedFilterIndexes.add(index));\n }\n } else {\n compiledPattern[key] = value;\n }\n }\n return {\n pattern: compiledPattern,\n variables,\n pushedFilterIndexes: [...pushedFilterIndexes],\n };\n}\n\nfunction rdf3xBenchmarkPushdownFilter(\n variableName: string,\n filters: RdfQueryFilter[],\n numericAggregateVariables: Set<string>,\n): { pattern?: RdfQuadJoinPattern['pattern'][RdfQueryPatternKey]; filterIndexes: number[] } | undefined {\n const operators: Record<string, unknown> = {};\n const filterIndexes: number[] = [];\n for (let index = 0; index < filters.length; index += 1) {\n const filter = filters[index];\n if (filter.variable !== variableName || filter.variable2 || filter.operand) {\n continue;\n }\n switch (filter.operator) {\n case '$eq':\n case '$sameTerm':\n if (filter.value === undefined || !isTerm(filter.value as any)) {\n return undefined;\n }\n return { pattern: filter.value as Term, filterIndexes: [index] };\n case '$in':\n if (!filter.values?.length || filter.values.some((value) => !isTerm(value as any))) {\n return undefined;\n }\n return { pattern: { $in: filter.values as Term[] }, filterIndexes: [index] };\n case '$notIn':\n if (!filter.values?.length || filter.values.some((value) => !isTerm(value as any))) {\n return undefined;\n }\n return { pattern: { $notIn: filter.values as Term[] }, filterIndexes: [index] };\n case '$gt':\n case '$gte':\n case '$lt':\n case '$lte':\n if (filter.value === undefined) {\n return undefined;\n }\n operators[filter.operator] = filter.value;\n filterIndexes.push(index);\n break;\n case '$termType':\n if (filter.value !== 'numeric' || !numericAggregateVariables.has(variableName)) {\n return undefined;\n }\n filterIndexes.push(index);\n break;\n default:\n return undefined;\n }\n }\n if (Object.keys(operators).length > 0) {\n return { pattern: operators as RdfQuadJoinPattern['pattern'][RdfQueryPatternKey], filterIndexes };\n }\n return filterIndexes.length > 0\n ? { filterIndexes }\n : undefined;\n}\n\nfunction queryAggregates(query: RdfQuery): RdfQueryAggregate[] {\n return query.aggregates && query.aggregates.length > 0\n ? query.aggregates\n : query.aggregate\n ? [query.aggregate]\n : [];\n}\n\nfunction variablesInLocalPattern(pattern: RdfQueryPattern): string[] {\n return ['graph', 'subject', 'predicate', 'object']\n .map((key) => pattern[key as RdfQueryPatternKey])\n .filter(isQueryVariable)\n .map((value) => value.variable);\n}\n\nfunction canCompileRdf3xGroupAggregateHaving(\n having: RdfQueryFilter[],\n aggregateAliases: Set<string>,\n): boolean {\n return having.every((filter) => (\n aggregateAliases.has(filter.variable)\n && !filter.operand\n && !filter.variable2\n && filter.value !== undefined\n && isGroupAggregateHavingOperator(filter.operator)\n && numericRangeValue(filter.value) !== undefined\n ));\n}\n\nfunction rdf3xGroupAggregateHaving(\n having: RdfQueryFilter[],\n aggregateAliases: Set<string>,\n): RdfQuadJoinGroupAggregateHaving[] {\n return having.map((filter) => {\n const value = filter.value === undefined ? undefined : numericRangeValue(filter.value);\n if (\n !aggregateAliases.has(filter.variable)\n || !isGroupAggregateHavingOperator(filter.operator)\n || value === undefined\n ) {\n throw new Error('RDF-3X join shadow cannot compile grouped HAVING');\n }\n return {\n aggregate: filter.variable,\n operator: filter.operator,\n value,\n };\n });\n}\n\nfunction isGroupAggregateHavingOperator(\n operator: RdfQueryFilter['operator'],\n): operator is RdfQuadJoinGroupAggregateHaving['operator'] {\n return operator === '$eq'\n || operator === '$ne'\n || operator === '$gt'\n || operator === '$gte'\n || operator === '$lt'\n || operator === '$lte';\n}\n\nfunction isQueryVariable(value: unknown): value is { variable: string } {\n return value !== null\n && typeof value === 'object'\n && !('termType' in value)\n && 'variable' in value\n && typeof (value as { variable?: unknown }).variable === 'string';\n}\n\nfunction unsupportedRdf3xPatternReason(pattern: QuintPattern): string | undefined {\n for (const key of ['graph', 'subject', 'predicate', 'object'] as const) {\n const value = pattern[key];\n if (!value || isTerm(value as any)) {\n continue;\n }\n if (key === 'graph' && isGraphPrefixPattern(value)) {\n continue;\n }\n if (isRdf3xTermInPattern(value)) {\n continue;\n }\n if (isRdf3xTermNotInPattern(value)) {\n continue;\n }\n if (key === 'object' && isSupportedRdf3xObjectOperatorPattern(value)) {\n continue;\n }\n return `unsupported ${key} pattern for RDF-3X shadow`;\n }\n return undefined;\n}\n\nfunction rdf3xPatternFor(pattern: QuintPattern): Rdf3xTriplePattern {\n const result: Rdf3xTriplePattern = {};\n for (const key of ['graph', 'subject', 'predicate', 'object'] as const) {\n const value = pattern[key];\n if (!value) {\n continue;\n }\n if (key === 'graph' && isGraphPrefixPattern(value)) {\n result.graph = { $startsWith: value.$startsWith };\n continue;\n }\n if (isRdf3xTermInPattern(value)) {\n result[key] = value;\n continue;\n }\n if (isRdf3xTermNotInPattern(value)) {\n result[key] = value;\n continue;\n }\n if (key === 'object' && isSupportedRdf3xObjectOperatorPattern(value)) {\n result.object = value;\n continue;\n }\n if (!isTerm(value as any)) {\n throw new Error(`RDF-3X shadow benchmark only supports exact ${key} terms or graph prefixes`);\n }\n result[key] = value as import('@rdfjs/types').Term;\n }\n return result;\n}\n\nfunction isRdf3xTermInPattern(value: unknown): value is Rdf3xTermInPattern {\n return value !== null\n && typeof value === 'object'\n && !('termType' in value)\n && Object.keys(value).length === 1\n && Array.isArray((value as { $in?: unknown }).$in)\n && ((value as { $in: unknown[] }).$in).length > 0\n && ((value as { $in: unknown[] }).$in).every((entry) => isTerm(entry as any));\n}\n\nfunction isRdf3xTermNotInPattern(value: unknown): value is Rdf3xTermNotInPattern {\n return value !== null\n && typeof value === 'object'\n && !('termType' in value)\n && Object.keys(value).length === 1\n && Array.isArray((value as { $notIn?: unknown }).$notIn)\n && ((value as { $notIn: unknown[] }).$notIn).length > 0\n && ((value as { $notIn: unknown[] }).$notIn).every((entry) => isTerm(entry as any));\n}\n\nfunction isGraphPrefixPattern(value: unknown): value is { $startsWith: string } {\n return value !== null\n && typeof value === 'object'\n && '$startsWith' in value\n && typeof (value as { $startsWith?: unknown }).$startsWith === 'string';\n}\n\nfunction isSupportedRdf3xObjectOperatorPattern(value: unknown): value is Rdf3xObjectOperatorPattern {\n if (value === null || typeof value !== 'object' || 'termType' in value) {\n return false;\n }\n let hasOperator = false;\n for (const operator of ['$gt', '$gte', '$lt', '$lte'] as const) {\n const rangeValue = (value as Rdf3xObjectRangePattern)[operator];\n if (rangeValue === undefined) {\n continue;\n }\n hasOperator = true;\n if (!isSupportedRdf3xObjectRangeValue(rangeValue)) {\n return false;\n }\n }\n for (const operator of ['$contains', '$endsWith'] satisfies Array<keyof Rdf3xObjectTextSearchPattern>) {\n const textValue = (value as Rdf3xObjectTextSearchPattern)[operator];\n if (textValue === undefined) {\n continue;\n }\n hasOperator = true;\n if (typeof textValue !== 'string') {\n return false;\n }\n }\n return hasOperator;\n}\n\nfunction isSupportedRdf3xObjectRangeValue(value: unknown): boolean {\n if (typeof value === 'number') {\n return Number.isFinite(value);\n }\n if (typeof value === 'string') {\n return true;\n }\n return isTerm(value as any);\n}\n\nfunction numericRangeValue(value: Term | string | number | boolean): number | undefined {\n if (typeof value === 'boolean') {\n return undefined;\n }\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n if (value.termType !== 'Literal' || !isRdfNumericDatatype(value.datatype.value)) {\n return undefined;\n }\n const parsed = rdfNumericValue(value.value);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction isSemanticallyOrdered(options?: QueryOptions): boolean {\n return Boolean(options?.order && options.order.length > 0);\n}\n\nfunction isSemanticallyOrderedRdf3xJoinShape(shape: Rdf3xJoinBenchmarkShape): boolean {\n switch (shape.kind) {\n case 'join':\n case 'group-count':\n case 'group-aggregate':\n return Boolean(shape.options?.orderBy && shape.options.orderBy.length > 0);\n case 'join-count':\n case 'join-aggregate':\n return false;\n default: {\n const exhaustive: never = shape;\n throw new Error(`Unsupported RDF-3X benchmark shape: ${JSON.stringify(exhaustive)}`);\n }\n }\n}\n\nfunction benchmarkSide(keys: string[], durationsMs: number[]): RdfModelShadowBenchmarkSide {\n return {\n returnedRows: keys.length,\n checksum: checksum(keys, false),\n orderedChecksum: checksum(keys, true),\n durationsMs,\n p50DurationMs: percentile(durationsMs, 0.5),\n p95DurationMs: percentile(durationsMs, 0.95),\n };\n}\n\nfunction diffBindingKeys(primaryKeys: string[], candidateKeys: string[]): RdfShadowDiff {\n const primarySet = new Set(primaryKeys);\n const candidateSet = new Set(candidateKeys);\n return {\n missingFromPrimary: Array.from(candidateSet).filter((key) => !primarySet.has(key)).sort(),\n extraInPrimary: Array.from(primarySet).filter((key) => !candidateSet.has(key)).sort(),\n };\n}\n\nfunction comparePerformance(\n compatibility: RdfModelShadowBenchmarkSide,\n solidRdf: RdfModelShadowBenchmarkSide,\n): RdfModelShadowPerformanceComparison {\n const p95DeltaMs = solidRdf.p95DurationMs - compatibility.p95DurationMs;\n const p95Ratio = solidRdf.p95DurationMs / Math.max(1, compatibility.p95DurationMs);\n return {\n p95DeltaMs,\n p95Ratio,\n matched: p95DeltaMs <= PERFORMANCE_P95_MIN_ABSOLUTE_HEADROOM_MS\n || p95Ratio <= PERFORMANCE_P95_MAX_RATIO,\n };\n}\n\nfunction compareSpace(\n compatibility: StoreStats,\n solidRdf: RdfIndexStats,\n): RdfModelShadowSpaceComparison {\n if (\n compatibility.databaseBytes === undefined\n || compatibility.tableBytes === undefined\n || compatibility.indexBytes === undefined\n ) {\n return {\n databaseDeltaBytes: 0,\n tableDeltaBytes: 0,\n indexDeltaBytes: 0,\n databaseRatio: 0,\n tableRatio: 0,\n indexRatio: 0,\n matched: false,\n unavailableReason: 'compatibility store did not report database/table/index bytes',\n };\n }\n\n const databaseDeltaBytes = solidRdf.databaseBytes - compatibility.databaseBytes;\n const tableDeltaBytes = solidRdf.tableBytes - compatibility.tableBytes;\n const indexDeltaBytes = solidRdf.indexBytes - compatibility.indexBytes;\n\n return {\n databaseDeltaBytes,\n tableDeltaBytes,\n indexDeltaBytes,\n databaseRatio: ratio(solidRdf.databaseBytes, compatibility.databaseBytes),\n tableRatio: ratio(solidRdf.tableBytes, compatibility.tableBytes),\n indexRatio: ratio(solidRdf.indexBytes, compatibility.indexBytes),\n matched: databaseDeltaBytes <= 0 && tableDeltaBytes <= 0 && indexDeltaBytes <= 0,\n };\n}\n\nfunction ratio(candidate: number, baseline: number): number {\n if (baseline <= 0) {\n return candidate <= 0 ? 1 : Number.POSITIVE_INFINITY;\n }\n return candidate / baseline;\n}\n\nfunction missingExpectedPlan(testCase: RdfModelBenchmarkCase, metrics: RdfIndexMetrics): string[] {\n return [\n ...testCase.expectedPlan.filter((label) => !matchesExpectedPlanLabel(label, testCase, metrics)),\n ...unresolvedPlanFailures(metrics.queryPlan ?? []),\n ];\n}\n\nfunction matchesExpectedPlanLabel(label: string, testCase: RdfModelBenchmarkCase, metrics: RdfIndexMetrics): boolean {\n const pattern = testCase.query.pattern;\n const planText = (metrics.queryPlan ?? []).join('\\n');\n switch (label) {\n case 'graph-scope':\n return Boolean(pattern.graph)\n && (metrics.indexChoice.includes('G')\n || metrics.indexChoice === 'source-membership'\n || planText.includes('GraphPrefixMembershipFilter')\n || planText.includes('GraphMembershipFilter')\n || planText.includes('Rdf3xMembershipScan')\n || planText.includes('scan.graph_prefix'));\n case 'type-filter':\n return isTerm(pattern.predicate as any)\n && termToId(pattern.predicate as any) === RDF_TYPE\n && Boolean(pattern.object)\n && metrics.indexChoice !== 'full-scan'\n && metrics.indexChoice !== 'facts-post-filter';\n case 'predicate-filter':\n return Boolean(pattern.predicate)\n && (metrics.indexChoice.includes('P')\n || metrics.indexChoice === 'source-membership'\n || planText.includes('Rdf3xPermutationScan('));\n case 'predicate-object-filter':\n return Boolean(pattern.predicate)\n && Boolean(pattern.object)\n && (metrics.indexChoice.includes('P')\n || metrics.indexChoice === 'source-membership'\n || planText.includes('Rdf3xPermutationScan('));\n case 'predicate-object-range-filter':\n return Boolean(pattern.predicate)\n && (planText.includes('_range') || planText.includes('LexicalRange(') || planText.includes('NumericRange('));\n case 'limit':\n return testCase.query.options?.limit !== undefined && planText.includes('LIMIT');\n case 'order':\n return Boolean(testCase.query.options?.order?.length) && planText.includes('ORDER BY');\n case 'text-index':\n return planText.includes('TextSearch(');\n case 'rdf-subject-join':\n return planText.includes('TextSearch(')\n && metrics.indexChoice !== 'full-scan'\n && metrics.matchedRows >= metrics.returnedRows;\n case 'SPOG':\n case 'POSG':\n case 'GSPO':\n case 'GPOS':\n case 'OSPG':\n return metrics.indexChoice === label || matchesPgPermutationPlan(label, testCase, metrics);\n default:\n return false;\n }\n}\n\nfunction matchesPgPermutationPlan(\n label: string,\n testCase: RdfModelBenchmarkCase,\n metrics: RdfIndexMetrics,\n): boolean {\n const planText = (metrics.queryPlan ?? []).join('\\n');\n const graphScoped = matchesExpectedPlanLabel('graph-scope', testCase, metrics);\n switch (label) {\n case 'SPOG':\n return metrics.indexChoice === 'SPO' || planText.includes('Rdf3xPermutationScan(SPO)');\n case 'POSG':\n return metrics.indexChoice === 'POS' || planText.includes('Rdf3xPermutationScan(POS)');\n case 'OSPG':\n return metrics.indexChoice === 'OSP' || planText.includes('Rdf3xPermutationScan(OSP)');\n case 'GSPO':\n return graphScoped && (metrics.indexChoice === 'SPO' || planText.includes('Rdf3xPermutationScan(SPO)'));\n case 'GPOS':\n return graphScoped && (metrics.indexChoice === 'POS' || planText.includes('Rdf3xPermutationScan(POS)'));\n default:\n return false;\n }\n}\n\nfunction missingExpectedRdf3xPlan(testCase: RdfModelBenchmarkCase, metrics: Rdf3xIndexMetrics): string[] {\n return [\n ...testCase.expectedPlan.filter((label) => !matchesExpectedRdf3xPlanLabel(label, testCase, metrics)),\n ...unresolvedPlanFailures(metrics.queryPlan ?? []),\n ];\n}\n\nfunction matchesExpectedRdf3xPlanLabel(\n label: string,\n testCase: RdfModelBenchmarkCase,\n metrics: Rdf3xIndexMetrics,\n): boolean {\n const pattern = testCase.query.pattern;\n const planText = (metrics.queryPlan ?? []).join('\\n');\n switch (label) {\n case 'graph-scope':\n return Boolean(pattern.graph)\n && (metrics.indexChoice === 'source-membership'\n || planText.includes('GraphPrefixMembershipFilter')\n || planText.includes('GraphMembershipFilter'));\n case 'type-filter':\n return isTerm(pattern.predicate as any)\n && termToId(pattern.predicate as any) === RDF_TYPE\n && Boolean(pattern.object)\n && metrics.indexChoice !== 'none';\n case 'predicate-filter':\n return Boolean(pattern.predicate) && metrics.indexChoice !== 'none';\n case 'predicate-object-filter':\n return Boolean(pattern.predicate) && Boolean(pattern.object) && metrics.indexChoice !== 'none';\n case 'predicate-object-range-filter':\n return Boolean(pattern.predicate)\n && (planText.includes('NumericRange(') || planText.includes('LexicalRange('));\n case 'limit':\n return testCase.query.options?.limit !== undefined\n && (planText.includes('Pagination') || planText.includes('LIMIT'));\n case 'order':\n return Boolean(testCase.query.options?.order?.length)\n && (planText.includes('ORDER BY') || planText.includes('Rdf3xJoinOrder('));\n case 'text-index':\n return planText.includes('TextSearch(');\n case 'rdf-subject-join':\n return planText.includes('TextSearch(')\n && metrics.indexChoice !== 'none'\n && metrics.matchedRows >= metrics.returnedRows;\n case 'SPOG':\n return matchesRdf3xPermutation(metrics, 'SPO');\n case 'POSG':\n return matchesRdf3xPermutation(metrics, 'POS');\n case 'OSPG':\n return matchesRdf3xPermutation(metrics, 'OSP');\n case 'GSPO':\n return matchesExpectedRdf3xPlanLabel('graph-scope', testCase, metrics)\n && matchesRdf3xPermutation(metrics, 'SPO');\n case 'GPOS':\n return matchesExpectedRdf3xPlanLabel('graph-scope', testCase, metrics)\n && matchesRdf3xPermutation(metrics, 'POS');\n default:\n return false;\n }\n}\n\nfunction matchesRdf3xPermutation(metrics: Rdf3xIndexMetrics, permutation: Rdf3xPermutationName): boolean {\n const planText = (metrics.queryPlan ?? []).join('\\n');\n return metrics.indexChoice === permutation || planText.includes(`Rdf3xPermutationScan(${permutation})`);\n}\n\nfunction missingExpectedQueryPlan(\n testCase: RdfModelQueryBenchmarkCase,\n metrics: RdfQueryMetrics,\n returnedRows: number,\n): string[] {\n return [\n ...testCase.expectedPlan.filter((label) => !matchesExpectedQueryPlanLabel(label, metrics)),\n ...unresolvedPlanFailures(metrics.plan),\n ...minimumReturnedRowsFailures(testCase, returnedRows),\n ];\n}\n\nfunction unresolvedPlanFailures(plan: readonly string[]): string[] {\n return hasUnresolvedPlan(plan) ? ['resolved-terms'] : [];\n}\n\nfunction hasUnresolvedPlan(plan: readonly string[]): boolean {\n return plan.some((entry) => /\\bunresolved\\b/i.test(entry));\n}\n\nfunction minimumReturnedRowsFailures(\n testCase: RdfModelQueryBenchmarkCase,\n returnedRows: number,\n): string[] {\n const minimum = testCase.minReturnedRows ?? 0;\n return returnedRows >= minimum ? [] : [`min-rows:${minimum}`];\n}\n\nfunction matchesExpectedQueryPlanLabel(label: string, metrics: RdfQueryMetrics): boolean {\n const planText = metrics.plan.join('\\n');\n switch (label) {\n case 'materialized-cache-hit':\n return planText.includes('PostgresMaterializedResultHit');\n case 'materialized-cache-miss':\n return planText.includes('PostgresMaterializedResultMiss')\n || planText.includes('PostgresMaterializedResultRefresh');\n case 'materialized-cache-store':\n return planText.includes('PostgresMaterializedResultStore');\n case 'query-template-cache-hit':\n return planText.includes('PostgresQueryTemplateCacheHit');\n case 'query-template-cache-miss':\n return planText.includes('PostgresQueryTemplateCacheMiss');\n case 'query-template-cache-bypass':\n return planText.includes('PostgresQueryTemplateCacheBypass');\n case 'group-count-index':\n return planText.includes('Aggregate(group-count-index)')\n || planText.includes('PostgresRdf3xGroupCount');\n case 'group-aggregate-index':\n return planText.includes('Aggregate(group-basic-multi-index)')\n || planText.includes('Aggregate(group-basic-index)')\n || planText.includes('Aggregate(group-basic-multi)')\n || planText.includes('Aggregate(group-basic)')\n || planText.includes('PostgresRdf3xGroupAggregate');\n case 'join-aggregate-index':\n return (\n (planText.includes('Aggregate(join-basic-multi-index)')\n || planText.includes('Aggregate(join-basic-index)'))\n && (planText.includes('IndexJoinAggregate(')\n || planText.includes('Rdf3xPrimaryJoinAggregate('))\n ) || planText.includes('PostgresRdf3xJoinAggregate');\n case 'numeric-aggregate':\n return planText.includes('JoinGroupAggregateNumeric(')\n || planText.includes('Aggregate(group-basic-multi)')\n || planText.includes('Aggregate(group-basic-index)')\n || planText.includes('Rdf3xJoinGroupAggregateNumeric(')\n || planText.includes('PostgresRdf3xGroupAggregate')\n || planText.includes('PostgresNumericAggregateFactsCutover(');\n case 'numeric-aggregate-facts-cutover':\n return planText.includes('PostgresFactsQuery')\n && planText.includes('PostgresNumericAggregateFactsCutover(')\n && !planText.includes('PostgresRdf3xGroupAggregate');\n case 'having-pushdown':\n return (planText.includes('IndexGroupCountHaving(')\n || planText.includes('IndexGroupAggregateHaving(')\n || planText.includes('PostgresRdf3xAggregateHaving(')\n || planText.includes('PostgresRdfNativeCustomIndexAggregateHaving('))\n && !planText.includes('\\nHaving(')\n && !planText.includes('\\nPostgresFactsHaving(');\n case 'order':\n return (planText.includes('IndexGroupCountOrder(')\n || planText.includes('IndexGroupAggregateOrder(')\n || planText.includes('PostgresRdf3xAggregateOrder(')\n || planText.includes('PostgresRdfNativeCustomIndexAggregateOrder('))\n && !planText.includes('\\nSort')\n && !planText.includes('\\nPostgresFactsSort(');\n case 'limit':\n return (planText.includes('IndexGroupCountLimit')\n || planText.includes('IndexGroupAggregateLimit')\n || planText.includes('PostgresRdf3xAggregateLimit')\n || planText.includes('PostgresRdfNativeCustomIndexAggregateLimit'))\n && !planText.includes('\\nLimit')\n && !planText.includes('\\nPostgresFactsLimit');\n case 'join-index':\n return planText.includes('IndexJoin(')\n && !planText.includes('\\nIndexScan(')\n || planText.includes('PostgresRdf3xJoin(')\n || planText.includes('PostgresRdfNativeCustomIndexBgpJoin(')\n || planText.includes('PostgresRdfNativeCustomIndexValuesJoin(')\n || localIndexScanCount(planText) >= 2;\n case 'subject-star-join':\n return planText.includes('SubjectStarJoin(')\n || planText.includes('PostgresRdf3xSubjectStarJoin(')\n || planText.includes('PostgresRdfNativeCustomIndexSubjectStar');\n case 'values-recheck':\n return (planText.includes('Rdf3xJoinTupleValues(') || planText.includes('Values('))\n && !planText.includes('PostgresFactsValues(');\n case 'values-join-pushdown':\n return (planText.includes('Rdf3xJoinTupleValues(') || planText.includes('Values('))\n && !planText.includes('PostgresFactsValues(');\n case 'join-order-pushdown':\n return (planText.includes('IndexJoinOrder(')\n || planText.includes('Rdf3xJoinOrder(')\n || planText.includes('Rdf3xJoinOrderBy(')\n || planText.includes('PostgresRdfNativeCustomIndexBgpOrderPage('))\n && !planText.includes('\\nSort')\n && !planText.includes('\\nPostgresFactsSort(');\n case 'join-limit-pushdown':\n return (planText.includes('IndexJoinLimit')\n || planText.includes('Rdf3xJoinLimit')\n || planText.includes('PostgresRdf3xJoinLimit')\n || planText.includes('PostgresRdfNativeCustomIndexBgpLimit')\n || planText.includes('PostgresRdfNativeCustomIndexValuesJoinLimit'))\n && !planText.includes('\\nLimit')\n && !planText.includes('\\nPostgresFactsLimit');\n case 'range-filter-pushdown':\n return (metrics.filtersPushedDown > 0 || planText.includes('PostgresMaterializedResultHit'))\n && (planText.includes('LexicalRange(') || planText.includes('NumericRange('));\n case 'join-count-index':\n return planText.includes('Aggregate(join-count-distinct-index)')\n && planText.includes('IndexJoinCount(')\n && !planText.includes('\\nIndexScan(')\n || planText.includes('PostgresRdf3xJoinCount');\n case 'text-search-source':\n return planText.includes('TextSearch(')\n && metrics.indexChoices.includes('text-chunk');\n case 'vector-search-source':\n return planText.includes('VectorSearch(')\n && metrics.indexChoices.includes('vector-chunk');\n case 'search-rdf-join':\n return planText.includes('TextSearch(')\n && planText.includes('VectorSearch(')\n && (planText.includes('IndexJoin(')\n || planText.includes('PostgresRdf3xJoin(')\n || planText.includes('PostgresFactsScan(')\n || localIndexScanCount(planText) >= 1);\n case 'planner-source-estimates':\n return planText.includes('SourceEstimate(RdfBgpSource#')\n && planText.includes('SourceEstimate(TextMatchSource#')\n && planText.includes('SourceEstimate(VectorMatchSource#')\n && planText.includes('SourceEstimate(PathScopeSource#')\n && planText.includes('SourceEstimate(AclScopeSource#');\n case 'fusion-rank-inputs':\n return planText.includes('FusionRankInputs(text:?textScore,vector:?vectorScore,output:?fusionScore)');\n case 'fusion-rank-weights':\n return planText.includes('FusionRankWeights(text:0.55,vector:0.45,output:?fusionScore)');\n case 'fusion-rank-tiebreaker':\n return planText.includes('FusionRankTieBreaker(asc:?message)');\n case 'fusion-hard-filters-before-rank':\n return planText.includes('FusionHardFiltersBeforeRank(path,acl,output:?fusionScore)');\n case 'search-score-rerank':\n return planText.includes('Bind(?fusionScore:=')\n && planText.includes('Sort');\n default:\n return false;\n }\n}\n\nfunction localIndexScanCount(planText: string): number {\n return planText.match(/\\bIndexScan\\(/g)?.length ?? 0;\n}\n\nfunction missingExpectedRdf3xJoinPlan(\n testCase: RdfModelQueryBenchmarkCase,\n metrics: Rdf3xJoinMetrics,\n returnedRows: number,\n): string[] {\n return [\n ...testCase.expectedPlan.filter((label) => !matchesExpectedRdf3xJoinPlanLabel(label, metrics)),\n ...unresolvedPlanFailures(metrics.queryPlan ?? []),\n ...minimumReturnedRowsFailures(testCase, returnedRows),\n ];\n}\n\nfunction matchesExpectedRdf3xJoinPlanLabel(label: string, metrics: Rdf3xJoinMetrics): boolean {\n const planText = (metrics.queryPlan ?? []).join('\\n');\n switch (label) {\n case 'group-count-index':\n return planText.includes('Rdf3xJoinGroupCount(');\n case 'group-aggregate-index':\n return planText.includes('Rdf3xJoinGroupAggregate(')\n || planText.includes('Rdf3xJoinGroupAggregateNumeric(');\n case 'numeric-aggregate':\n return planText.includes('Rdf3xJoinGroupAggregateNumeric(')\n || planText.includes('Rdf3xJoinAggregateNumeric(');\n case 'join-aggregate-index':\n return planText.includes('Rdf3xJoinAggregate(')\n || planText.includes('Rdf3xJoinAggregateNumeric(');\n case 'having-pushdown':\n return planText.includes('Rdf3xJoinGroupCountHaving(')\n || planText.includes('Rdf3xJoinGroupAggregateHaving(');\n case 'order':\n return planText.includes('Rdf3xJoinGroupCountOrder(')\n || planText.includes('Rdf3xJoinGroupAggregateOrder(');\n case 'limit':\n return planText.includes('Rdf3xJoinGroupCountLimit')\n || planText.includes('Rdf3xJoinGroupAggregateLimit');\n case 'join-index':\n return planText.includes('Rdf3xJoinBGP(');\n case 'subject-star-join':\n return planText.includes('SubjectStarJoin(');\n case 'join-order-pushdown':\n return planText.includes('Rdf3xJoinOrder(');\n case 'join-limit-pushdown':\n return planText.includes('Rdf3xJoinLimit');\n case 'range-filter-pushdown':\n return planText.includes('LexicalRange(') || planText.includes('NumericRange(');\n case 'join-count-index':\n return planText.includes('Rdf3xJoinCount(');\n default:\n return false;\n }\n}\n\nfunction bindingKey(binding: RdfBindingRow): string {\n return Object.keys(binding)\n .sort()\n .map((key) => `${key}=${termToId(binding[key] as any)}`)\n .join('\\u001f');\n}\n\nfunction checksum(keys: string[], ordered: boolean): string {\n const normalized = ordered ? keys : [...keys].sort();\n return createHash('sha256')\n .update(normalized.join('\\n'))\n .digest('hex');\n}\n\nfunction percentile(values: number[], percentileValue: number): number {\n if (values.length === 0) {\n return 0;\n }\n const sorted = [...values].sort((a, b) => a - b);\n const index = Math.min(\n sorted.length - 1,\n Math.max(0, Math.ceil(sorted.length * percentileValue) - 1),\n );\n return sorted[index];\n}\n\nfunction scaleRank(scale: RdfBenchmarkScale): number {\n switch (scale) {\n case 'small':\n return 1;\n case 'medium':\n return 2;\n case 'large':\n return 3;\n default: {\n const exhaustive: never = scale;\n return exhaustive;\n }\n }\n}\n\nfunction serializePattern(pattern: QuintPattern): JsonPattern {\n return Object.fromEntries(\n Object.entries(pattern).map(([key, value]) => [key, serializePatternValue(value)]),\n );\n}\n\nfunction serializeQueryPlan(query: RdfQuery): JsonPattern {\n return serializePatternValue(query) as JsonPattern;\n}\n\nfunction serializePatternValue(value: unknown): unknown {\n if (!value) {\n return value;\n }\n if (isTerm(value as any)) {\n return termToId(value as any);\n }\n if (Array.isArray(value)) {\n return value.map(serializePatternValue);\n }\n if (typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .map(([key, nested]) => [key, serializePatternValue(nested)]),\n );\n }\n return value;\n}\n"]}