{"_id":"rdf-stores","_rev":"16-c7a7542e15e52bc65d704fe4f85e753a","name":"rdf-stores","dist-tags":{"beta":"1.0.0-beta.2","latest":"2.7.0"},"versions":{"1.0.0-beta.1":{"name":"rdf-stores","version":"1.0.0-beta.1","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@1.0.0-beta.1","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"5b94aaeffb05172820ee85120dac134e44a3c7b8","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-1.0.0-beta.1.tgz","fileCount":66,"integrity":"sha512-KzXLWmfkNrctt89OdCr3sGZHD3689ygl4GTsbnkZ7LFg+M3GCPbONUMUa6gbRGdz1P4qa4/8FW8anvYbzXqRAQ==","signatures":[{"sig":"MEUCIQCGetWyv3W7L7qluzewHTecFHTpoCltyQcs6RLlCiFHUQIgLb9ms6FDMCkvbL6aK0m9q+x+zNvFtohx+X5Md/q38Kg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":289268},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","gitHead":"55b5c111c9fc89ca6b92cd3e15eecf6d98bf9d3d","scripts":{"lint":"eslint . --ext .ts --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"8.19.3","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"resolutions":{"@types/rdf-js":"4.0.1"},"_nodeVersion":"16.19.1","dependencies":{"rdf-terms":"^1.9.1","rdf-string":"^1.6.2","@rdfjs/types":"*","asynciterator":"^3.8.0","rdf-data-factory":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"n3":"^1.16.3","jest":"^29.0.0","yargs":"^17.7.1","eslint":"^7.9.0","ts-jest":"^29.0.0","jest-rdf":"^1.5.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^29.4.1","pre-commit":"^1.2.2","typescript":"^5.0.0","@types/jest":"^29.0.0","arrayify-stream":"^2.0.1","streamify-array":"^1.0.1","eslint-config-es":"^3.23.0","eslint-plugin-jest":"^24.0.2","eslint-plugin-tsdoc":"^0.2.7","eslint-plugin-import":"^2.22.0","manual-git-changelog":"^1.0.0","@typescript-eslint/parser":"^5.0.0","@rubensworks/eslint-config":"^1.0.0","eslint-plugin-unused-imports":"^1.0.0","@typescript-eslint/eslint-plugin":"^5.0.0","eslint-import-resolver-typescript":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_1.0.0-beta.1_1686658349828_0.7248634406577987","host":"s3://npm-registry-packages"}},"1.0.0-beta.2":{"name":"rdf-stores","version":"1.0.0-beta.2","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@1.0.0-beta.2","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"81f29b4fa94cfc0ccdc2d484df2976ff2da8c3fd","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-1.0.0-beta.2.tgz","fileCount":66,"integrity":"sha512-8OCMghQ6EkGGICmMdSzrUDfFtnookp+f0VtQRCKOqqnle+NNJQwlQh+FC4dR1lQPqUs7Cvd1voG1+VK79AOwXg==","signatures":[{"sig":"MEYCIQCFPJJls+0Q6S5pTJ8Bh6eyQ5qU3NdDuADV5bLqONnB0QIhAN7ikfaaWzN9mtx/mWyuJWjVvvVkmJXSajQxniiooTHy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":294711},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","gitHead":"9a0c01fe81575dc612fc3e04f084208133b10f51","scripts":{"lint":"eslint . --ext .ts --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"8.19.3","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"resolutions":{"@types/rdf-js":"4.0.1"},"_nodeVersion":"16.19.1","dependencies":{"rdf-terms":"^1.9.1","rdf-string":"^1.6.2","@rdfjs/types":"*","asynciterator":"^3.8.0","rdf-data-factory":"^1.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"n3":"^1.16.3","jest":"^29.0.0","yargs":"^17.7.1","eslint":"^7.9.0","ts-jest":"^29.0.0","jest-rdf":"^1.5.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^29.4.1","pre-commit":"^1.2.2","typescript":"^5.0.0","@types/jest":"^29.0.0","arrayify-stream":"^2.0.1","streamify-array":"^1.0.1","eslint-config-es":"^3.23.0","eslint-plugin-jest":"^24.0.2","eslint-plugin-tsdoc":"^0.2.7","eslint-plugin-import":"^2.22.0","manual-git-changelog":"^1.0.0","@typescript-eslint/parser":"^5.0.0","@rubensworks/eslint-config":"^1.0.0","eslint-plugin-unused-imports":"^1.0.0","@typescript-eslint/eslint-plugin":"^5.0.0","eslint-import-resolver-typescript":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_1.0.0-beta.2_1686830494363_0.7859079322084612","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"rdf-stores","version":"1.0.0","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@1.0.0","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"1689bd669853bda857620d0db32f3b59940db208","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-1.0.0.tgz","fileCount":66,"integrity":"sha512-wqp7M5409rbhpWQE0C1vyVysbz++aD2vEkZ6yueSxhDtyLvznS41R3cKiuUpm3ikc/yTpaCZwPo4iyKEaAwBIg==","signatures":[{"sig":"MEYCIQC7X4oVHX7vjkbJlz2y6LkryeXwssZ308fGSb7OCJthKwIhANHACFrUZGtgXN+WRZU5PDvYVSEKAD5xBO+CJH+BhVwW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":294903},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","gitHead":"df29ccd063d11e981dff073623dbbaeb57b0778a","scripts":{"lint":"eslint . --ext .ts --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"8.19.3","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"resolutions":{"@types/rdf-js":"4.0.1"},"_nodeVersion":"16.19.1","dependencies":{"rdf-terms":"^1.9.1","rdf-string":"^1.6.2","@rdfjs/types":"*","asynciterator":"^3.8.0","rdf-data-factory":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"n3":"^1.16.3","jest":"^29.0.0","yargs":"^17.7.1","eslint":"^7.9.0","ts-jest":"^29.0.0","jest-rdf":"^1.5.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^29.4.1","pre-commit":"^1.2.2","typescript":"^5.0.0","@types/jest":"^29.0.0","arrayify-stream":"^2.0.1","streamify-array":"^1.0.1","eslint-config-es":"^3.23.0","eslint-plugin-jest":"^24.0.2","eslint-plugin-tsdoc":"^0.2.7","eslint-plugin-import":"^2.22.0","manual-git-changelog":"^1.0.0","@typescript-eslint/parser":"^5.0.0","@rubensworks/eslint-config":"^1.0.0","eslint-plugin-unused-imports":"^1.0.0","@typescript-eslint/eslint-plugin":"^5.0.0","eslint-import-resolver-typescript":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_1.0.0_1687868162285_0.37392995436583876","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"rdf-stores","version":"2.0.0","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@2.0.0","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"3aae1a836d9ccbf530883210bcc1915c300452b9","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-2.0.0.tgz","fileCount":66,"integrity":"sha512-jE69XM6EwL+bkXabcwHPH7pkXudBYoxw2PzQgNnbpyHBa9b4DGQGk4lcQJVHPaQDEeeq4msDGGq+c48HUnOdgg==","signatures":[{"sig":"MEQCIAsjWJE0JEXFm2A4xJAQJq223Q4sxvH8e3IHTO7Pe0XIAiANcNBJ9LhxTOsBZAktJtCcavgYqJxWvchpIJJBpYVDrg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":297849},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","funding":{"url":"https://github.com/sponsors/rubensworks/","type":"individual"},"gitHead":"4c198391983f22337787ef020886ba4048e058dd","scripts":{"lint":"eslint . --ext .ts --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"10.9.0","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"_nodeVersion":"22.10.0","dependencies":{"rdf-terms":"^2.0.0","rdf-string":"^2.0.0","asynciterator":"^3.8.0","rdf-data-factory":"^2.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"n3":"^1.16.3","jest":"^29.0.0","yargs":"^17.7.1","eslint":"^7.9.0","ts-jest":"^29.0.0","jest-rdf":"^2.0.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^29.4.1","tinybench":"^2.8.0","pre-commit":"^1.2.2","typescript":"^5.0.0","@types/jest":"^29.0.0","arrayify-stream":"^2.0.1","streamify-array":"^1.0.1","eslint-config-es":"^3.23.0","eslint-plugin-jest":"^24.0.2","eslint-plugin-tsdoc":"^0.2.7","eslint-plugin-import":"^2.22.0","manual-git-changelog":"^1.0.0","@typescript-eslint/parser":"^5.0.0","@codspeed/tinybench-plugin":"^3.1.0","@rubensworks/eslint-config":"^1.0.0","eslint-plugin-unused-imports":"^1.0.0","@typescript-eslint/eslint-plugin":"^5.0.0","eslint-import-resolver-typescript":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_2.0.0_1736338162930_0.045440009410707694","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"rdf-stores","version":"2.1.0","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@2.1.0","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"b09261eb5c4b94611fbc52ef98557b35bafb4361","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-2.1.0.tgz","fileCount":66,"integrity":"sha512-ndfc/zMud8ci+GNMitlmfzRRdximR7TageWTA/Dsel0bTNqZBktuB1oUdqCFsPqzlCtz4c2vX7Rq3wEHcOsZkA==","signatures":[{"sig":"MEUCIEBNt4vWfrzodXSPkj1J0cGRD3/BWkjEkUM9JflQu7fAAiEAkUwX03/SM9wDkaMwv0RGkrXWTkbGvhej+jW20fCGOig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":315864},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","funding":{"url":"https://github.com/sponsors/rubensworks/","type":"individual"},"gitHead":"aa21979339e8cb047c3f567da0416ab66efa4b15","scripts":{"lint":"eslint . --ext .ts --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"10.9.0","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"_nodeVersion":"22.10.0","dependencies":{"rdf-terms":"^2.0.0","rdf-string":"^2.0.0","asynciterator":"^3.8.0","rdf-data-factory":"^2.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"n3":"^1.16.3","jest":"^29.0.0","yargs":"^17.7.1","eslint":"^7.9.0","ts-jest":"^29.0.0","jest-rdf":"^2.0.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^29.4.1","tinybench":"^2.8.0","pre-commit":"^1.2.2","typescript":"5.5.4","@types/jest":"^29.0.0","arrayify-stream":"^2.0.1","streamify-array":"^1.0.1","eslint-config-es":"^3.23.0","eslint-plugin-jest":"^24.0.2","eslint-plugin-tsdoc":"^0.2.7","@comunica/utils-jest":"^4.1.0","eslint-plugin-import":"^2.22.0","manual-git-changelog":"^1.0.0","@typescript-eslint/parser":"^5.0.0","@codspeed/tinybench-plugin":"^3.1.0","@rubensworks/eslint-config":"^1.0.0","eslint-plugin-unused-imports":"^1.0.0","@comunica/utils-bindings-factory":"^4.1.0","@typescript-eslint/eslint-plugin":"^5.0.0","eslint-import-resolver-typescript":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_2.1.0_1739448462953_0.008482079494344541","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"rdf-stores","version":"2.1.1","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@2.1.1","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"a95b173a90540f35a965ff5add9e386d8a715647","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-2.1.1.tgz","fileCount":66,"integrity":"sha512-wYovM7q+12K+dV3AsPbBiAY63Dy1eoOBJ69XoL757Pqwimz2LLCrSwrjMyqc4AB+/wPgDwPeNiQA7IzD6zeAZg==","signatures":[{"sig":"MEQCIDesIqS6fQqGLs67Sv8ZD2UAkNoxGbVVabXA/++rLpNbAiA/hEMDZOqSXp9rFjt6dN/9/C/ygLrlolfxCNehrkqcxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318455},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","funding":{"url":"https://github.com/sponsors/rubensworks/","type":"individual"},"gitHead":"a7b35a613cc986d404ebb9e98d9889535622b03b","scripts":{"lint":"eslint . --ext .ts --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"10.9.0","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"_nodeVersion":"22.10.0","dependencies":{"rdf-terms":"^2.0.0","rdf-string":"^2.0.0","asynciterator":"^3.8.0","rdf-data-factory":"^2.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"n3":"^1.16.3","jest":"^29.0.0","yargs":"^17.7.1","eslint":"^7.9.0","ts-jest":"^29.0.0","jest-rdf":"^2.0.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^29.4.1","tinybench":"^2.8.0","pre-commit":"^1.2.2","typescript":"5.5.4","@types/jest":"^29.0.0","arrayify-stream":"^2.0.1","streamify-array":"^1.0.1","eslint-config-es":"^3.23.0","eslint-plugin-jest":"^24.0.2","eslint-plugin-tsdoc":"^0.2.7","@comunica/utils-jest":"^4.1.0","eslint-plugin-import":"^2.22.0","manual-git-changelog":"^1.0.0","@typescript-eslint/parser":"^5.0.0","@codspeed/tinybench-plugin":"^3.1.0","@rubensworks/eslint-config":"^1.0.0","eslint-plugin-unused-imports":"^1.0.0","@comunica/utils-bindings-factory":"^4.1.0","@typescript-eslint/eslint-plugin":"^5.0.0","eslint-import-resolver-typescript":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_2.1.1_1739453524233_0.5109016493678757","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"rdf-stores","version":"2.2.0","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@2.2.0","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"aa61ed5315fa5d6aff55575dddafa96bb608aaba","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-2.2.0.tgz","fileCount":66,"integrity":"sha512-HEZblb6LQA+yiZrlO96HQeFRVjpEQUeCZ7rmCoN64bBQ6eHamKWPIh0vxMLe7h8a8AF23wbA3jpLG3pHRPk1mQ==","signatures":[{"sig":"MEQCIDE63E/aDrUVuMIwguy2OUAzGIOYWFaXB3e35UXRl2vCAiA+KJG4inVjJYd1APsb4e47LtSNlNFn2oqhX/B8Ar/OTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371865},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","funding":{"url":"https://github.com/sponsors/rubensworks/","type":"individual"},"gitHead":"22b2403e3720bbb286cb0dcf0b5f69872a589823","scripts":{"lint":"eslint . --ext .ts --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"10.9.2","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"rdf-terms":"^2.0.0","rdf-string":"^2.0.0","asynciterator":"^3.8.0","rdf-data-factory":"^2.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"n3":"^2.0.0","jest":"^30.2.0","yargs":"^18.0.0","eslint":"^7.9.0","ts-jest":"^29.0.0","jest-rdf":"^2.0.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^30.2.0","tinybench":"^2.8.0","pre-commit":"^1.2.2","typescript":"5.9.3","@types/jest":"^30.0.0","arrayify-stream":"^2.0.1","streamify-array":"^1.0.1","eslint-config-es":"^3.23.0","eslint-plugin-jest":"^24.0.2","eslint-plugin-tsdoc":"^0.2.7","@comunica/utils-jest":"^5.0.0","eslint-plugin-import":"^2.22.0","manual-git-changelog":"^1.0.0","@typescript-eslint/parser":"^5.0.0","@codspeed/tinybench-plugin":"^3.1.0","@rubensworks/eslint-config":"^1.0.0","eslint-plugin-unused-imports":"^1.0.0","@comunica/utils-bindings-factory":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0","eslint-import-resolver-typescript":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_2.2.0_1772545311642_0.8524223751757207","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"rdf-stores","version":"2.3.0","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@2.3.0","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"49ac3340cfcb4f06dedcfe3ab06ea12c9c091bf0","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-2.3.0.tgz","fileCount":66,"integrity":"sha512-KfXy5sBDKdpJUx1KOquzx72smxu9tkMbhIr/lEUEte6ZWjGTW40/sWXlfVwblhy0kHKzu3z4cMRyiHO9sWAORw==","signatures":[{"sig":"MEQCID9VB0b9jF2geziGefCbFfBD9DiWjIadlBl33iHtEcwvAiBhoSPVnQwgiL9dQORsBB1IWsPRy/AyFRnJxlk89HM3rA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":422298},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","funding":{"url":"https://github.com/sponsors/rubensworks/","type":"individual"},"gitHead":"40019cea589675797086dc54f3b3567a56a763b4","scripts":{"lint":"eslint . --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"10.9.2","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"rdf-terms":"^2.0.0","rdf-string":"^2.0.0","asynciterator":"^3.8.0","rdf-data-factory":"^2.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"n3":"^2.0.0","jest":"^30.2.0","yargs":"^18.0.0","eslint":"^8.56.0","ts-jest":"^29.0.0","jest-rdf":"^2.0.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^30.2.0","tinybench":"^2.8.0","pre-commit":"^2.0.0","typescript":"^6.0.0","@types/jest":"^30.0.0","arrayify-stream":"^2.0.1","streamify-array":"^1.0.1","@comunica/utils-jest":"^5.0.0","manual-git-changelog":"^1.0.0","@codspeed/tinybench-plugin":"^3.1.0","@rubensworks/eslint-config":"^3.0.0","@comunica/utils-bindings-factory":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_2.3.0_1786638387793_0.5743550408937237","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"rdf-stores","version":"2.4.0","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@2.4.0","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"7c5971b09ab263840e109a1dd619447093289b55","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-2.4.0.tgz","fileCount":66,"integrity":"sha512-jWmuHnXvZNaGnhWMUPcHCPEtsB8DVn4w0AHau4Ak1a1zXGfdQjVfz9Teii3iLv7Y7BqlvdWV0IFTp7cexo3ZwA==","signatures":[{"sig":"MEUCIB5cRSZojL+di3UOunHExJj6aLEdAguaH8j+hLGkE32JAiEAn9dVzTvT1GQRWad+ERZTHoxa7kzoJ0cotsPy0Aw2ccw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":476089},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","funding":{"url":"https://github.com/sponsors/rubensworks/","type":"individual"},"gitHead":"fe5a270344be671527b4b102b245eabc286e25b7","scripts":{"lint":"eslint . --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"10.9.8","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"rdf-terms":"^2.0.0","rdf-string":"^2.0.0","asynciterator":"^3.8.0","rdf-data-factory":"^2.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"n3":"^2.0.0","jest":"^30.2.0","yargs":"^18.0.0","eslint":"^8.56.0","ts-jest":"^29.0.0","jest-rdf":"^2.0.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^30.2.0","tinybench":"^6.0.0","pre-commit":"^2.0.0","typescript":"^6.0.0","@types/jest":"^30.0.0","arrayify-stream":"^3.0.0","streamify-array":"^2.0.0","@comunica/utils-jest":"^5.0.0","manual-git-changelog":"^1.0.0","@codspeed/tinybench-plugin":"^5.0.0","@rubensworks/eslint-config":"^3.0.0","@comunica/utils-bindings-factory":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_2.4.0_1787845481282_0.2507011770424783","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"rdf-stores","version":"2.5.0","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@2.5.0","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"d054e2a443139ad342eaf02a8d4068988ad3e2d1","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-2.5.0.tgz","fileCount":75,"integrity":"sha512-Ut+QkXGtOdmRoDV4IYtWZ4mQT2CV5RgxmkINXfZqI6vNfYUiSXFMxw58sydcTViVai+Eny8xwxLn52AokCC+3A==","signatures":[{"sig":"MEYCIQDVMmi6IpcxMDDf5DS3bPTCaTBh2asM15bcyNpNRXHUVwIhAIBhnT/5BplvZ0lv1eMx5yuyP/DCuq8Aav75vRcBtG3Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":518311},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","funding":{"url":"https://github.com/sponsors/rubensworks/","type":"individual"},"gitHead":"240a62e2dd37e585f91aa36b7e41064b26d02de3","scripts":{"lint":"eslint . --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"10.9.8","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"rdf-terms":"^2.0.0","rdf-string":"^2.0.0","asynciterator":"^3.8.0","rdf-data-factory":"^2.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"n3":"^2.0.0","jest":"^30.2.0","yargs":"^18.0.0","eslint":"^8.56.0","ts-jest":"^29.0.0","jest-rdf":"^2.0.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^30.2.0","tinybench":"^6.0.0","pre-commit":"^2.0.0","typescript":"^6.0.0","@types/jest":"^30.0.0","arrayify-stream":"^3.0.0","streamify-array":"^2.0.0","@comunica/utils-jest":"^5.0.0","manual-git-changelog":"^1.0.0","@codspeed/tinybench-plugin":"^5.0.0","@rubensworks/eslint-config":"^3.0.0","@comunica/utils-bindings-factory":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_2.5.0_1788268761379_0.06358828237776493","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"rdf-stores","version":"2.5.1","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@2.5.1","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"993299ec2396659e1e9c110a01f36ca0a8f04b0c","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-2.5.1.tgz","fileCount":75,"integrity":"sha512-kk7aSauyh+BqRVx+yxrqtQ1pRC3FmJtPMN5tovd0Y+qWSW4QkmzBYMgMhUZ/VwLteansEvsoNWxHL/Wr9FwFRA==","signatures":[{"sig":"MEUCIQD24iKUGqDAC/pHpDzeOijCLqVi6EsQlEP0ys310SYWrwIgJ0hZ5jpimMEcwQ1QkJRMu9Jdki4r9ItEejL1o6/Phqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICgzn8LvP9Xg6PDqJbs9Eq26ofSKiwiaQnMYIsjnMjyWAiA22ZysTbT01O3ZXZwjg+zRFv/AHJ1kvBbZNfrL70vRBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":522593},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","funding":{"url":"https://github.com/sponsors/rubensworks/","type":"individual"},"gitHead":"eddec33112f2912435dbdf76d8993b4e0f7e3fd0","scripts":{"lint":"eslint . --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"10.9.8","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"rdf-terms":"^2.0.0","rdf-string":"^2.0.0","asynciterator":"^3.8.0","rdf-data-factory":"^2.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"n3":"^2.0.0","jest":"^30.2.0","yargs":"^18.0.0","eslint":"^8.56.0","ts-jest":"^29.0.0","jest-rdf":"^2.0.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^30.2.0","tinybench":"^6.0.0","pre-commit":"^2.0.0","typescript":"^6.0.0","@types/jest":"^30.0.0","arrayify-stream":"^3.0.0","streamify-array":"^2.0.0","@comunica/utils-jest":"^5.0.0","manual-git-changelog":"^1.0.0","@codspeed/tinybench-plugin":"^5.0.0","@rubensworks/eslint-config":"^3.0.0","@comunica/utils-bindings-factory":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_2.5.1_1790247620668_0.7653189495004293","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"rdf-stores","version":"2.6.0","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","_id":"rdf-stores@2.6.0","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"355133fbdeadb394f0de012b4cd926b0f4ac9f25","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-2.6.0.tgz","fileCount":84,"integrity":"sha512-RCe/bx6OLIlSkUPKkUVoGe2RSXYmDpb6KX5VdOOriORWF8OJ+0V9kUzPuHxAeHF/yf5iuY7ZXlhdOBpVvpS1hg==","signatures":[{"sig":"MEQCIBwxTg1w5x6JgPggM7MQY2JzGyrY4nOYxh1S5Ax1JptHAiA0Rl6ceVC6snLhOCLtzjKhSd8+ZhFcedlHkwyPrvTIxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAHfCwJUj40u2BxBAYzF919ieKsfQT30DQR6IXZj2ULiAiASEQOrg1pzCZ4fON2NGHhR4Xg48akQK13yZgXV2B0Xhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":730309},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","funding":{"url":"https://github.com/sponsors/rubensworks/","type":"individual"},"gitHead":"715323e7918008b4e7592515e736fdff6da819a0","scripts":{"lint":"eslint . --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"10.9.8","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"rdf-terms":"^2.0.0","rdf-string":"^2.0.0","asynciterator":"^3.8.0","rdf-data-factory":"^2.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"n3":"^2.0.0","jest":"^30.2.0","yargs":"^18.0.0","eslint":"^8.56.0","ts-jest":"^29.0.0","jest-rdf":"^2.0.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^30.2.0","tinybench":"^6.0.0","pre-commit":"^2.0.0","typescript":"^6.0.0","@types/jest":"^30.0.0","arrayify-stream":"^3.0.0","streamify-array":"^2.0.0","@comunica/utils-jest":"^5.0.0","manual-git-changelog":"^1.0.0","@codspeed/tinybench-plugin":"^5.0.0","@rubensworks/eslint-config":"^3.0.0","@comunica/utils-bindings-factory":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rdf-stores_2.6.0_1790354648859_0.7610690177187498","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"_id":"rdf-stores@2.7.0","bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"dist":{"shasum":"fe7e59528cebbd8c453d26a4a853ff616a93552d","tarball":"https://registry.npmjs.org/rdf-stores/-/rdf-stores-2.7.0.tgz","fileCount":90,"integrity":"sha512-maFnI+wzr+xsggUQEF0hUzzs49rHto6PkE6Kji9N1HaMpc40Zq7NlV6DFAP7tvVdbAJIeMbosPjmhNXIGUe6aQ==","signatures":[{"sig":"MEQCIB71uAfu0A6s9aB2B+mGXYfd+aVhfbjpxP7LKvDjA3tcAiBkZ5FAywI0yOxSwTsO6gYuN4NISAviUsNigWLG6/Dj0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAktrBnnKB9PFiuGAOcBwNziqsNhw/bR7rN+TFs999qMAiEA3kHHIHM00V/+c0fVSFEoccm0gssRw6s4iNBzHwdKezA="}],"unpackedSize":847419},"jest":{"testRegex":".*-test\\.ts$","transform":{"^.+\\.ts$":"ts-jest"},"collectCoverage":true,"coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"moduleFileExtensions":["ts","js"],"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"]},"main":"index.js","name":"rdf-stores","author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"funding":{"url":"https://github.com/sponsors/rubensworks/","type":"individual"},"gitHead":"d68d2dade4bda66ce41f060c9f9e9919f5c39851","license":"MIT","scripts":{"lint":"eslint . --cache","test":"jest ${1}","build":"tsc","prepare":"npm run build","version":"manual-git-changelog onversion","validate":"npm ls","coveralls":"jest --coverage && cat ./coverage/lcov.info | coveralls","test-watch":"jest ${1} --watch"},"typings":"index","version":"2.7.0","_npmUser":{"name":"rubensworks","email":"rubensworks@gmail.com"},"homepage":"https://github.com/rubensworks/rdf-stores.js#readme","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"pre-commit":["build","lint","test"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"_npmVersion":"10.9.8","description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","directories":{},"maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"rdf-terms":"^2.0.0","rdf-string":"^2.0.0","asynciterator":"^3.8.0","rdf-data-factory":"^2.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"n3":"^2.0.0","jest":"^30.2.0","yargs":"^18.0.0","eslint":"^8.56.0","ts-jest":"^29.0.0","jest-rdf":"^2.0.0","@types/n3":"^1.10.4","coveralls":"^3.0.0","jest-each":"^30.2.0","tinybench":"^6.0.0","pre-commit":"^2.0.0","typescript":"^6.0.0","@types/jest":"^30.0.0","arrayify-stream":"^3.0.0","streamify-array":"^2.0.0","@comunica/utils-jest":"^5.0.0","manual-git-changelog":"^1.0.0","@codspeed/tinybench-plugin":"^5.0.0","@rubensworks/eslint-config":"^3.0.0","@comunica/utils-bindings-factory":"^5.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rdf-stores_2.7.0_1791206365362_0.9311330782142593"}}},"time":{"created":"2023-06-13T12:03:57.025Z","modified":"2026-10-05T13:19:25.688Z","1.0.0-beta.0":"2023-06-13T12:03:57.317Z","1.0.0-beta.1":"2023-06-13T12:12:30.003Z","1.0.0-beta.2":"2023-06-15T12:01:34.552Z","1.0.0":"2023-06-27T12:16:02.480Z","2.0.0":"2025-01-08T12:09:23.110Z","2.1.0":"2025-02-13T12:07:43.194Z","2.1.1":"2025-02-13T13:32:04.484Z","2.2.0":"2026-03-03T13:41:51.785Z","2.3.0":"2026-08-13T16:26:27.959Z","2.4.0":"2026-08-27T15:44:41.442Z","2.5.0":"2026-09-01T13:19:21.526Z","2.5.1":"2026-09-24T11:00:20.776Z","2.6.0":"2026-09-25T16:44:08.954Z","2.7.0":"2026-10-05T13:19:25.548Z"},"bugs":{"url":"https://github.com/rubensworks/rdf-stores.js/issues"},"author":{"name":"Ruben Taelman","email":"rubensworks@gmail.com"},"license":"MIT","homepage":"https://github.com/rubensworks/rdf-stores.js#readme","keywords":["rdf","rdfjs","store","stores","index","indexes","nested","quoted","asserted","triples","quads","triple","quad"],"repository":{"url":"git+ssh://git@github.com/rubensworks/rdf-stores.js.git","type":"git"},"description":"A TypeScript/JavaScript implementation of the RDF/JS store interface with support for quoted triples.","maintainers":[{"name":"rubensworks","email":"rubensworks@gmail.com"}],"readme":"# RDF Stores\n\n[![Build status](https://github.com/rubensworks/rdf-stores.js/workflows/CI/badge.svg)](https://github.com/rubensworks/rdf-stores.js/actions?query=workflow%3ACI)\n[![Coverage Status](https://coveralls.io/repos/github/rubensworks/rdf-stores.js/badge.svg?branch=master)](https://coveralls.io/github/rubensworks/rdf-stores.js?branch=master)\n[![npm version](https://badge.fury.io/js/rdf-stores.svg)](https://www.npmjs.com/package/rdf-stores)\n\nThis package provides an in-memory triple/quad store with triple/quad pattern access.\nIt allows you to configure indexes to tune performance for specific cases.\nIt works in both JavaScript and TypeScript.\n\nMain features:\n* 🧠 In-memory indexing\n* ⚙️ Full configurability of indexes and dictionaries\n* 🔮 Quoted triples support (RDF-star / RDF 1.2)\n* 🚀 Highly performant: [Fastest](#performance) JavaScript store in terms of query speed\n* ✅ Extensively tested (39.331 unit tests)\n* 👥 Implements the [RDF/JS Store](https://rdf.js.org/stream-spec/#store-interface) and [RDF/JS DatasetCore](https://rdf.js.org/dataset-spec/#datasetcore-interface) interfaces\n\nIf using TypeScript, it is recommended to use this in conjunction with [`@rdfjs/types`](https://www.npmjs.com/package/@rdfjs/types).\n\n## Installation\n\n```bash\n$ npm install rdf-stores\n```\nor\n```bash\n$ yarn add rdf-stores\n```\n\nThis package also works out-of-the-box in browsers via tools such as [webpack](https://webpack.js.org/) and [browserify](http://browserify.org/).\n\n## Quick start\n\nThe example below shows how to create a new store with default settings,\nadding two quads, and querying it.\n\n```typescript\nimport { RdfStore } from 'rdf-stores';\nimport { DataFactory } from 'rdf-data-factory';\n\n// Create a new store with default settings\nconst store = RdfStore.createDefault();\n// Or, for data that is loaded in bulk and then mainly queried, a store that keeps quads sorted\n// const store = RdfStore.createOrdered();\n\n// Ingest manually defined data\nconst DF = new DataFactory();\nstore.addQuad(\n  DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o1')),\n);\nstore.addQuad(\n  DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p2'), DF.namedNode('ex:o2')),\n);\n\n// Find data matching '<ex:s1> ?p ?o'\nconst stream = store.match(DF.namedNode('ex:s1'), undefined, undefined);\nstream.on('data', (quad) => {\n  console.log(quad);\n});\nstream.on('end', () => {\n  console.log('Done!');\n});\n\n// Interacting with the store as a DatasetCore object\nconst dataset = store.asDataset();\nconsole.log(dataset.size);\ndataset.add(DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o1')));\nconsole.log(dataset.has(DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o1'))));\n```\n\nUse `createOrdered` when data is loaded at once, with `import` or `addQuads`, and then mainly queried:\nfor data with many distinct terms, it uses several times less memory, and it returns sorted results, but adds quads one by one more slowly.\nSee [`createDefault` vs `createOrdered`](#createdefault-vs-createordered) for the differences.\n\nNote that this library only focuses on triple storage and provide triple pattern query access.\nIf you want to execute more complex queries over this store (such as SPARQL queries), engines such as [Comunica](https://comunica.dev/) may be used:\n\n```typescript\nimport { QueryEngine } from '@comunica/query-sparql';\n\nconst bindingsStream = await myEngine.queryBindings(`SELECT * WHERE { ?s ?p ?o }`, {\n  sources: [store],\n});\nbindingsStream.on('data', (binding) => {\n    console.log(binding.toString());\n});\n```\nLearn more about using Comunica: https://comunica.dev/docs/query/getting_started/query_app/\n\n## Usage\n\nAll public getters and methods of an `RdfStore` are illustrated below.\nThe examples assume the following imports and objects:\n```typescript\nimport { DataFactory } from 'rdf-data-factory';\nimport { BindingsFactory } from '@comunica/utils-bindings-factory'; // Only necessary when requesting bindings\nconst streamifyArray = require('streamify-array');\nconst DF = new DataFactory();\nconst BF = new BindingsFactory(DF);\n```\n\n### `size`\n\nDetermining the number of (asserted) quads inside the store:\n\n```typescript\nconsole.log(store.size);\n```\n\n### `addQuad`\n\nAdding a quad to the store:\n\n```typescript\nstore.addQuad(\n  DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o1')),\n);\n```\n\n### `addQuads`\n\nAdding several quads to the store at once, which returns how many of them were not yet present:\n\n```typescript\nconst added = store.addQuads([\n  DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o1')),\n  DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o2')),\n]);\n```\n\nIf every index supports batches, as [`RdfStoreIndexSortedBlocks`](#createdefault-vs-createordered) does,\nthe quads are sorted once per index and merged in, which is much faster than adding them one by one.\nOtherwise, this is the same as calling `addQuad` for each of them.\n\n### `removeQuad`\n\nRemoving a quad from the store:\n\n```typescript\nstore.removeQuad(\n  DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o1')),\n);\n```\n\n### `remove`\n\nRemove a stream of quads from the store:\n\n```typescript\nconst result = store.remove(streamifyArray([\n  DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o1')),\n  DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o2')),\n]));\nresult.on('end', () => {\n  console.log('Done!');\n});\n```\n\n### `removeMatches`\n\nRemove all quads matching the given quad pattern from the store:\n\n```typescript\nconst result = store.remove(DF.namedNode('ex:s1'), undefined, DF.namedNode('ex:o1'), undefined);\nresult.on('end', () => {\n  console.log('Done!');\n});\n```\n\n### `deleteGraph`\n\nRemove all quads with the given graph element from the store:\n\n```typescript\nconst result = store.deleteGraph('ex:g1');\nresult.on('end', () => {\n  console.log('Done!');\n});\n```\n\n### `import`\n\nAdd a stream of quads into the store:\n\n```typescript\nconst result = store.import(streamifyArray([\n  DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o1')),\n  DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o2')),\n]));\nresult.on('end', () => {\n  console.log('Done!');\n});\n```\n\nIf every index supports batches, as [`RdfStoreIndexSortedBlocks`](#createdefault-vs-createordered) does,\nthe quads are collected while the stream flows, and inserted as a single batch (like [`addQuads`](#addquads)) when it ends.\nThey only become visible in the store at that point.\nThe store listens for the end of the stream before `import` returns,\nso listeners that are attached to the returned emitter afterwards (as above) are only called once all quads have been added.\n\n### `readQuads`\n\nReturns an iterable iterator producing all quads matching the given pattern:\n\n```typescript\nfor (const quad of store.readQuads(DF.namedNode('ex:s1'), undefined, DF.namedNode('ex:o1'), undefined)) {\n  console.log(quad);\n}\n```\n\n### `getQuads`\n\nReturns an array containing all quads matching the given pattern:\n\n```typescript\nconst array = store.getQuads(DF.namedNode('ex:s1'), undefined, DF.namedNode('ex:o1'), undefined)''\nconsole.log(array);\n```\n\n### `match`\n\nReturns a stream producing all quads matching the given pattern:\n\n```typescript\nconst stream = store.match(DF.namedNode('ex:s1'), undefined, DF.namedNode('ex:o1'), undefined);\n\nstream.on('data', (quad) => {\n  console.log(quad);\n});\nstream.on('end', () => {\n  console.log('Done!');\n});\n```\n\n### `readBindings`\n\nReturns an iterable iterator producing all [bindings](https://rdf.js.org/query-spec/#bindings-interface) matching the given pattern:\n\n```typescript\nfor (const bindings of store.readBindings(BF, DF.namedNode('ex:s1'), DF.variable('p'), DF.namedNode('ex:o1'), DF.variable('g'))) {\n  console.log(bindings.toString());\n  console.log(bindings.get('p'));\n  console.log(bindings.get('g'));\n}\n```\n\n### `getBindings`\n\nReturns an array containing all bindings matching the given pattern:\n\n```typescript\nconst array = store.getBindings(BF, DF.namedNode('ex:s1'), DF.variable('p'), DF.namedNode('ex:o1'), DF.variable('g'));\nconsole.log(array);\n```\n\n### `matchBindings`\n\nReturns a stream producing all bindings matching the given pattern:\n\n```typescript\nconst stream = store.match(DF.namedNode('ex:s1'), DF.variable('p'), DF.namedNode('ex:o1'), DF.variable('g'));\n\nstream.on('data', (bindings) => {\n  console.log(bindings.toString());\n});\nstream.on('end', () => {\n  console.log('Done!');\n});\n```\n\n### `resultOrder` and `seekTo`\n\nWhen a pattern is served by an [ordered index](#createdefault-vs-createordered),\nthe iterator returned by [`matchBindings`](#matchbindings) carries two extra members.\nBoth are absent otherwise, so a consumer can check for them to find out whether they are supported.\n\n`resultOrder` names the components the scan varies over, in the order it produces them:\n\n```typescript\nconst stream = store.matchBindings(BF, DF.variable('s'), DF.namedNode('ex:p1'), DF.variable('o'), DF.defaultGraph());\nconsole.log(stream.resultOrder); // [ 'subject', 'object' ] on a (graph, predicate, subject, object) index\n```\n\n`seekTo` drops what is still ahead of the scan and before the given term, using a binary search rather than reading through it.\nThis makes it useful for a merge join, which can skip to a term coming from the other side:\n\n```typescript\nstream.seekTo('subject', DF.namedNode('ex:s5'));\n// The next result read has a subject that is not before ex:s5\n```\n\nThe sought term does not have to occur in the store: the scan lands on the first term that is not before it.\nA seek is applied right away and only drops what is ahead, so it can never rewind a scan or re-emit a result that was already produced.\n\n### `indexOrders`\n\nThe orders a scan of this store can come back in, one entry per ordered index:\n\n```typescript\nconsole.log(store.indexOrders);\n// [ [ 'graph', 'subject', 'predicate', 'object' ], [ 'graph', 'predicate', 'object', 'subject' ], ... ]\n```\n\nThis is empty for stores without ordered indexes, since the other indexes iterate in insertion order.\nThe order a given pattern actually gets is the entry for the index that serves it,\nwith the components the pattern binds removed, since those do not vary across the scan.\n\n### `countDistinctTerms`\n\nCount the given distinct terms that exist in the store.\n\n```typescript\nstore.countDistinctTerms([ 'subject', 'predicate' ]);\n```\n\nAn optional `filters` array (in SPOG order) can be passed to count only those distinct terms\nthat originate from quads matching the given components.\nEach entry in the array corresponds to `subject`, `predicate`, `object`, and `graph` respectively,\nwhere `undefined` means that component is unconstrained.\n\n```typescript\n// Count distinct subjects that appear in the default graph\nstore.countDistinctTerms([ 'subject' ], [ undefined, undefined, undefined, DF.defaultGraph() ]);\n\n// Count distinct subject–predicate pairs with a specific predicate\nstore.countDistinctTerms([ 'subject', 'predicate' ], [ undefined, DF.namedNode('ex:p1'), undefined, undefined ]);\n```\n\n### `readDistinctTerms`\n\nReturns an iterable iterator producing distinct arrays of terms that exist in the store.\nEach returned array corresponds to the terms specified by given quad term names.\n\n```typescript\nfor (const [ subjectTerm ] of store.readDistinctTerms([ 'subject' ])) {\n  console.log(subjectTerm);\n}\n```\n\n```typescript\nfor (const [ subjectTerm, predicateTerm ] of store.readDistinctTerms([ 'subject', 'predicate' ])) {\n  console.log(subjectTerm.value);\n  console.log(predicateTerm.value);\n}\n```\n\nAn optional `filters` array (in SPOG order) can be passed to return only those distinct terms\nthat originate from quads matching the given components.\nEach entry in the array corresponds to `subject`, `predicate`, `object`, and `graph` respectively,\nwhere `undefined` means that component is unconstrained.\n\n```typescript\n// Iterate over all distinct subjects that appear in the default graph\nfor (const [ subjectTerm ] of store.readDistinctTerms([ 'subject' ], [ undefined, undefined, undefined, DF.defaultGraph() ])) {\n  console.log(subjectTerm.value);\n}\n\n// Iterate over distinct subject–predicate pairs for a specific predicate\nfor (const [ subjectTerm, predicateTerm ] of store.readDistinctTerms([ 'subject', 'predicate' ], [ undefined, DF.namedNode('ex:p1'), undefined, undefined ])) {\n  console.log(subjectTerm.value);\n  console.log(predicateTerm.value);\n}\n```\n\n### `getDistinctTerms`\n\nReturns an array containing distinct arrays of terms that exist in the store.\nEach returned array corresponds to the terms specified by given quad term names.\n\n```typescript\nconst array = store.getDistinctTerms([ 'subject', 'predicate' ]);\nconsole.log(array);\n```\n\nAn optional `filters` array (in SPOG order) can be passed to return only those distinct terms\nthat originate from quads matching the given components.\nEach entry in the array corresponds to `subject`, `predicate`, `object`, and `graph` respectively,\nwhere `undefined` means that component is unconstrained.\n\n```typescript\n// All distinct subjects in the default graph\nconst subjects = store.getDistinctTerms([ 'subject' ], [ undefined, undefined, undefined, DF.defaultGraph() ]);\nconsole.log(subjects);\n```\n\n### `matchDistinctTerms`\n\nReturns a stream producing distinct arrays of terms that exist in the store.\nEach returned array corresponds to the terms specified by given quad term names.\n\n```typescript\nconst stream = store.matchDistinctTerms([ 'subject', 'predicate' ]);\n\nstream.on('data', ([ subjectTerm, predicateTerm ]) => {\n  console.log(subjectTerm.value);\n  console.log(predicateTerm.value);\n});\nstream.on('end', () => {\n  console.log('Done!');\n});\n```\n\nAn optional `filters` array (in SPOG order) can be passed to return only those distinct terms\nthat originate from quads matching the given components.\nEach entry in the array corresponds to `subject`, `predicate`, `object`, and `graph` respectively,\nwhere `undefined` means that component is unconstrained.\n\n```typescript\n// Stream all distinct subjects in the default graph\nconst stream = store.matchDistinctTerms([ 'subject' ], [ undefined, undefined, undefined, DF.defaultGraph() ]);\n\nstream.on('data', ([ subjectTerm ]) => {\n  console.log(subjectTerm.value);\n});\nstream.on('end', () => {\n  console.log('Done!');\n});\n```\n\n### `countNodes`\n\nReturns the number of nodes in the given graph (can be a variable).\nNodes are all terms that are either a subject or object within the store.\n\nThis method can only be called when the store is constructed with `indexNodes: true`.\n\nThis can for example be useful for optimizing the Nodes function in SPARQL's property paths:\nhttps://www.w3.org/TR/sparql12-query/#defn_nodeSet\n\n```typescript\nconst amount = store.countNodes(DF.namedNode('g1'));\n```\n\n### `readNodes`\n\nReturns a generator producing all nodes in the given graph (can be a variable).\nNodes are all terms that are either a subject or object within the store.\n\nThis method can only be called when the store is constructed with `indexNodes: true`.\n\nIt returns a generator of tuples containing the named graph as first element and the node term as second element.\n\nThis can for example be useful for optimizing the Nodes function in SPARQL's property paths:\nhttps://www.w3.org/TR/sparql12-query/#defn_nodeSet\n\n```typescript\nfor (const [ graph, term ] of store.readNodes(DF.namedNode('g1'))) {\n  console.log(term.value);\n}\n```\n\n### `getNodes`\n\nReturns an array containing all nodes in the given graph (can be a variable).\nNodes are all terms that are either a subject or object within the store.\n\nThis method can only be called when the store is constructed with `indexNodes: true`.\n\nIt returns an array of tuples containing the named graph as first element and the node term as second element.\n\nThis can for example be useful for optimizing the Nodes function in SPARQL's property paths:\nhttps://www.w3.org/TR/sparql12-query/#defn_nodeSet\n\n```typescript\nconst array = store.getNodes(DF.namedNode('g1'));\nconsole.log(array);\n```\n\n### `matchNodes`\n\nReturns a stream containing all nodes in the given graph (can be a variable).\nNodes are all terms that are either a subject or object within the store.\n\nThis method can only be called when the store is constructed with `indexNodes: true`.\n\nIt returns a stream of tuples containing the named graph as first element and the node term as second element.\n\nThis can for example be useful for optimizing the Nodes function in SPARQL's property paths:\nhttps://www.w3.org/TR/sparql12-query/#defn_nodeSet\n\n```typescript\nconst stream = store.matchNodes(DF.namedNode('g1'));\n\nstream.on('data', (term) => {\n  console.log(term.value);\n});\nstream.on('end', () => {\n  console.log('Done!');\n});\n```\n\n### `countQuads`\n\nCount the number of quads matching the given pattern:\n\n```typescript\nconst count = store.countQuads(DF.namedNode('ex:s1'), undefined, DF.namedNode('ex:o1'), undefined);\n```\n\n### `asDataset`\n\nInteract with this store using the [RDF/JS `DatasetCore` interface](https://rdf.js.org/dataset-spec/#datasetcore-interface).\n\n```typescript\nconst dataset = store.asDataset();\n\nconsole.log(dataset.size);\ndataset.add(DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o1')));\nconsole.log(dataset.has(DF.quad(DF.namedNode('ex:s1'), DF.namedNode('ex:p1'), DF.namedNode('ex:o1'))));\n```\n\n## Configuring a store\n\nInstead of using the default settings, you may optionally decide to configure the following aspects of a store:\n\n* **Index combinations**: In what orders quads should be stored, which will determine storage size, and query efficiency.\n* **Index type**: The type of index datastructure that will be used for each index combination.\n* **Dictionary**: The dictionary that will be used for encoding RDF terms.\n* **Data Factory**: The [RDF/JS data factory](https://rdf.js.org/data-model-spec/#datafactory-interface) for creating quads and terms.\n\nBelow, you can learn more about each of these aspects.\n\n### Default settings\n\nWhen creating a new store using `RdfStore.createDefault()`,\na store with the following settings will be created:\n\n* **Index combinations**: `GSPO`, `GPOS`, `GOSP`.\n* **Index type**: `RdfStoreIndexNestedRecord`\n* **Dictionary**: `TermDictionaryQuotedIndexed` with `TermDictionaryNumberRecordFullTerms`.\n* **Data factory**: `DataFactory` from [`rdf-data-factory`](https://www.npmjs.com/package/rdf-data-factory).\n\nThese default settings correspond to the following invocation:\n```typescript\nconst store = new RdfStore<number>({\n  indexCombinations: [\n    [ 'graph', 'subject', 'predicate', 'object' ],\n    [ 'graph', 'predicate', 'object', 'subject' ],\n    [ 'graph', 'object', 'subject', 'predicate' ],\n  ],\n  indexConstructor: subOptions => new RdfStoreIndexNestedMapQuoted(subOptions),\n  dictionary: new TermDictionaryQuotedIndexed(new TermDictionaryNumberRecordFullTerms()),\n  dataFactory: new DataFactory(),\n  indexNodes: false,\n});\n```\n\n**Note:** These default settings are considered the \"best\" for average usage.\nIt is possible that future updates may tweak these default settings.\nTherefore, if you want more predictable performance across updates,\nit may be safer to manually configure your store.\n\n### Index combinations\n\nThe `indexCombinations` option inside the `RdfStore` constructor allows you\nto configure in what orders quads should be stored.\nThe value of this option must always be an array containing one or more representations of quad component orders,\nwhere each order must always contain the following 4 elements in any order:\n`'subject'`, `'predicate'`, `'object'`, `'graph'`.\n\nFor example, the following will store all triples in a single index using `GSPO` order:\n```typescript\n{\n  indexCombinations: [\n    [ 'graph', 'subject', 'predicate', 'object' ],\n  ]\n}\n```\n\nThe following will contain 2 indexes, the first in `GPOS` order, and the second in `GOSP` order:\n```typescript\n{\n  indexCombinations: [\n    [ 'graph', 'predicate', 'object', 'subject' ],\n    [ 'graph', 'object', 'subject', 'predicate' ],\n  ]\n}\n```\n\nThese indexes enable a trade-off between storage size and query performance.\nThe more indexes, the higher the storage requirements, but the faster query performance.\nTherefore, if memory is limited, it is better to pick fewer (at least one) indexes,\nbut if query performance is more important, then more indexes could be configured.\nIf the order of the returned triples is not important, then the default index combinations\n(`GSPO`, `GPOS`, `GOSP`) should provide sufficient level of performance,\nas all triple pattern queries can efficiently be resolved using these indexes.\n\n### Index types\n\nThis library implements different approaches for storing indexes.\n\n* `RdfStoreIndexNestedRecord`: Stores quads inside nested `Record` objects. (**Fastest ingestion**)\n* `RdfStoreIndexNestedRecordQuoted`: Stores quads inside nested `Record` objects, and supports quoted triples.\n* `RdfStoreIndexNestedMap`: Stores quads inside nested `Map` objects. (**Fastest querying**)\n* `RdfStoreIndexNestedMapQuoted`: Stores quads inside nested `Map` objects, and supports quoted triples. (**Fastest querying and ingestion for quoted triples**)\n* `RdfStoreIndexSortedBlocks`: Stores quads in a sorted array of packed integers split into fixed-capacity blocks, and supports quoted triples. This is inspired by concepts of the B-Tree, but optimized for in-memory storage. (**Ordered scans that can skip ahead, and compact for data with many distinct terms**) See [`createDefault` vs `createOrdered`](#createdefault-vs-createordered).\n\nThe following types also exist, but are mainly for illustration purposes,\nas they are always outperformed by other approaches:\n* `RdfStoreIndexNestedMapRecursive`: Stores quads inside nested `Map` objects, and traverses the tree using recursive methods.\n* `RdfStoreIndexNestedMapRecursiveQuoted`: Stores quads inside nested `Map` objects, supports quoted triples, and traverses the tree using recursive methods.\n\nDifferent JavaScript engine implementations may lead to different levels of performance across these index types.\n\nFor example, the following will use `RdfStoreIndexNestedRecord` for all indexes:\n```typescript\n{\n  indexConstructor: subOptions => new RdfStoreIndexNestedRecord(subOptions)\n}\n```\n\n### `createDefault` vs `createOrdered`\n\n`RdfStore.createDefault()` and `RdfStore.createOrdered()` create stores with the same index combinations (`GSPO`, `GPOS`, `GOSP`), dictionary and data factory,\nbut with a different index type:\n\n|                                              | `createDefault()`                           | `createOrdered()`                                                  |\n|----------------------------------------------|---------------------------------------------|--------------------------------------------------------------------|\n| Index type                                   | `RdfStoreIndexNestedMapQuoted` (nested `Map` objects) | `RdfStoreIndexSortedBlocks` (sorted leaves of packed 32-bit integers) |\n| Memory                                       | Grows with the number of distinct terms: 420 MB for WatDiv (1.1M triples) | 16 bytes per quad per index: 111 MB for WatDiv |\n| Loading a batch with `import` or `addQuads` | Quad by quad: 7.8s for WatDiv               | Sorted once and merged in: 5.1s for WatDiv                         |\n| Adding quads one by one                      | Faster                                      | Slower: each insert shifts quads within a leaf                     |\n| Order of results                             | Insertion order                             | Sorted on the term order, reported by [`resultOrder`](#resultorder-and-seekto) |\n| Skipping ahead in results                    | Not supported                               | [`seekTo`](#resultorder-and-seekto)                                 |\n| Looking up a single quad                     | Faster                                      | 1.7 to 2 times slower                                              |\n| Counting quads of a pattern                  | Walks the matching maps                     | A few binary searches for bound prefixes                           |\n| Finding and counting distinct terms          | Read off map sizes                          | 2 to 3 times slower: walks the range, and caches counts until the store changes |\n| Quoted triples                               | Supported                                   | Supported                                                          |\n\nSo `createOrdered` suits data that is loaded in bulk and then mainly queried,\nespecially by engines that can make use of sorted results, such as merge joins.\n`createDefault` remains the better choice for stores that are filled incrementally while being queried.\n\nComponents that `RdfStoreIndexSortedBlocks` has to match after an unbound one are matched with a skip-scan, which jumps over non-matching ranges.\nIt requires a dictionary that encodes terms as 32-bit integers, which all bundled number dictionaries do.\nQuoted triple patterns are matched inside the index when the dictionary supports quoted triples, such as `TermDictionaryQuotedIndexed`.\n\nAll ordered indexes of a store share a single term order,\nwhich is defined by the `termComparator` option, and defaults to ordering on term type, value, datatype, language and base direction.\n`createOrdered` accepts the following options:\n\n```typescript\nconst store = RdfStore.createOrdered({\n  // Optional: the order to keep terms in\n  termComparator: (termA, termB) => termA.value.localeCompare(termB.value) || termA.termType.localeCompare(termB.termType),\n  // Optional: defaults to GSPO, GPOS, GOSP\n  indexCombinations: [\n    [ 'graph', 'predicate', 'subject', 'object' ],\n    [ 'graph', 'predicate', 'object', 'subject' ],\n    [ 'graph', 'object', 'subject', 'predicate' ],\n  ],\n  // Optional: if nodes must be indexed\n  nodes: true,\n});\n```\n\nThe same can be achieved through the regular constructor,\nwhich also allows tuning the index, although its defaults should rarely need changing:\n\n```typescript\nconst dictionary = new TermDictionaryQuotedIndexed(new TermDictionaryNumberRecordFullTerms());\nnew RdfStore<number>({\n  indexCombinations: RdfStore.DEFAULT_INDEX_COMBINATIONS,\n  indexConstructor: subOptions => new RdfStoreIndexSortedBlocks(subOptions, {\n    // Optional: the maximum number of quads per leaf\n    leafCapacity: 512,\n    // Optional: batches with fewer than 1 in this many of the quads in the index are inserted one by one\n    mergeThreshold: 32,\n    // Optional: quads checked one by one when skipping a group, before searching instead\n    linearProbes: 8,\n  }),\n  dictionary,\n  dataFactory: new DataFactory(),\n  termComparator: (termA, termB) => termA.value.localeCompare(termB.value),\n});\n```\n\nA comparator that considers two different terms equal is allowed: such terms are then ordered on their encoding.\n\n### Dictionaries\n\nThis library implements different approaches for dictionary encoding.\n\n* `TermDictionaryNumberMap`: Encodes stringified representations of terms to `number` using `Map` objects.\n* `TermDictionaryNumberRecord`: Encodes stringified representations of terms to `number` using `Record` objects.\n* `TermDictionaryNumberRecordFullTerms`: Encodes stringified representations of terms to `number` using `Record` objects, but keeps track of original term objects during decoding. (**Fastest when not requiring quoted triples**)\n* `TermDictionaryQuoted`: Delegates quoted triples and other RDF terms to separate dictionaries.\n* `TermDictionaryQuotedIndexed`: Stores quoted triples inside an index structure, and other RDF terms using a separate dictionary. (**Fastest when requiring quoted triples**)\n* `TermDictionaryQuotedReferential`: Delegates quoted triples and other RDF terms to separate dictionaries, but terms inside quoted triples are stored in the plain terms dictionary.\n* `TermDictionarySymbol`: Encodes stringified representations of terms to `Symbol` using `Map` objects.\n\nFor example, the following will use `TermDictionaryNumberRecordFullTerms`:\n```typescript\n{\n  dictionary: new TermDictionaryNumberRecordFullTerms()\n}\n```\n\nFor example, the following will use `TermDictionaryQuotedIndexed` with a `TermDictionaryNumberRecordFullTerms` for non-quoted-triple terms:\n```typescript\n{\n  dictionary: new TermDictionaryQuotedIndexed(new TermDictionaryNumberRecordFullTerms())\n}\n```\n\n### Data Factory\n\nWhen terms are decoded from indexes,\na dictionary is used to construct terms and quads.\nAny [RDF/JS data factory](https://rdf.js.org/data-model-spec/#datafactory-interface)\nimplementation can be used for this.\n\n## Performance\n\nExperimental results show the following:\n\n* A single `RdfStoreIndexNestedRecord` in `GSPO` order with `TermDictionaryNumberRecordFullTerms` achieves similar ingestion speeds as `N3Store`.\n* Storing multiple indexes improves query performance, at the cost of slower ingestion.\n* `RdfStoreIndexNestedMap` outperforms `RdfStoreIndexNestedRecord` and `N3Store` on query performance.\n* `TermDictionaryNumberRecordFullTerms` is generally the most efficient dictionary implementation, and it can be used in combination with `TermDictionaryQuotedIndexed` if quoted triples are to be used.\n* `RdfStoreIndexNestedMapQuoted` and `RdfStoreIndexNestedRecordQuoted` have a small overhead (~10%) on ingestion and query performance compared to their non-quoted index variants.\n* The measurements below contain two kinds of synthetic data.\n  Most scopes use data with only a few hundred distinct terms, which nested indexes store compactly.\n  The entities scope has about as many distinct terms as triples, as real data tends to:\n  2M triples about 131072 entities, each with a distinct value for each of 16 properties.\n* On the data with few distinct terms, `RdfStoreIndexSortedBlocks` scans patterns with one or two variables about as fast as the nested indexes,\n  but is 1.7 to 2 times slower on lookups without variables, 1.5 to 3 times slower on ingestion (also when adding in batches),\n  and 2 to 3 times slower on finding and counting distinct terms of one or two components.\n  It holds 2M triples in 109 MB, between `RdfStoreIndexNestedRecordQuoted` (67 MB) and `RdfStoreIndexNestedMapQuoted` (183 MB).\n* On the entities data, `RdfStoreIndexSortedBlocks` holds the 2M triples in 609 MB, against 2126 MB for `RdfStoreIndexNestedMapQuoted`\n  and 2883 MB for `RdfStoreIndexNestedRecordQuoted`, and loads them in a batch in 9.1s, against 9.9s and 15.5s.\n  It counts the triples of a property with a few binary searches instead of a walk over them (13ms against 17s for 1024 counts),\n  and reads the triples of a property in the order of their values without sorting them (0.6s against 1.1s).\n* Adding the entities data one quad at a time to `RdfStoreIndexSortedBlocks` is slow (2 minutes), because every new term that finds no room\n  between the labels of its neighbours in the term order makes all terms be relabelled. So for data with many distinct terms,\n  load in batches through `import` or `addQuads`, or use nested indexes for stores that are filled one quad at a time.\n* On real data, loading WatDiv (1.1M triples) through `import` into 3 indexes with node indexing takes 111 MB and 5.1s including parsing\n  with `RdfStoreIndexSortedBlocks`, against 420 MB and 7.8s for `RdfStoreIndexNestedMapQuoted`.\n\nThese conclusions are drawn from the measurements of the command `node --expose-gc perf/run.js -d 128 -o` (part of this repository).\nWith `--expose-gc`, memory usage is the heap and off-heap memory in use after garbage collection, which is what the store holds.\nThe measurements below were taken on a single machine with Node.js 22:\n\n```text\n# N3Store\n\n- Adding 2097152 triples to the default graph: 896.432ms\n* Memory usage for triples: 69MB\n- Finding all 2097152 triples in the default graph 2097152 times (0 variables): 4.940s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable): 879.241ms\n- Finding all 2097152 triples in the default graph 384 times (2 variables): 858.826ms\n- Finding all 2097152 triples in the default graph 32768 times (1 variable) via a stream: 1.547s\n- Counting all 2097152 triples in the default graph 32768 times (1 variable): 179.343ms\n\n- Adding 2097152 triples about 131072 entities, with distinct values: 21.483s\n* Memory usage for entities: 2649MB\n- Counting the 131072 triples of each of 16 properties 64 times: 1:57.382 (m:ss.mmm)\n- Finding the 131072 triples of a property sorted on their value, for 4 properties: 1.306s\n\n- Adding 1048576 quads: 1.227s\n* Memory usage for quads: 52MB\n- Finding all 1048576 quads 131072 times: 700.621ms\n\n\n# 3 Map indexes (number) OPT-QUERY\n\n- Adding 2097152 triples to the default graph: 2.466s\n* Memory usage for triples: 182MB\n- Finding all 2097152 triples in the default graph 2097152 times (0 variables): 1.726s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable): 524.31ms\n- Finding all 2097152 triples in the default graph 384 times (2 variables): 662.621ms\n- Finding all 2097152 triples as bindings in the default graph 384 times (2 variables): 4.051s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable) via a stream: 1.255s\n- Counting all 2097152 triples in the default graph 32768 times (1 variable): 31.981ms\n\n- Adding 2097152 triples about 131072 entities, with distinct values: 10.010s\n* Memory usage for entities: 2125MB\n- Counting the 131072 triples of each of 16 properties 64 times: 15.698s\n- Finding the 131072 triples of a property sorted on their value, for 4 properties: 936.018ms\n\n- Adding 262144 triples to the default graph: 304.824ms\n* Memory usage for triples: 32MB\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables): 239.541ms\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables) via a stream: 249.566ms\n- Finding all 262144 triples as bindings in the default graph 4096 times (1 variable): 54.759ms\n\n- Adding 1048576 quads: 1.152s\n* Memory usage for quads: 103MB\n- Finding all 1048576 quads 131072 times: 429.721ms\n\n- Adding 262144 quoted triples: 467.61ms\n* Memory usage for quoted triples: 80MB\n- Finding all 262144 quoted triples 192 times: 5.033s\n\n- Adding 1048576 quads: 1.287s\n* Memory usage for quads: 104MB\n- Finding all 32 terms (1) in the default graph 1024 times for each quad term (4): 620.214ms\n- Counting all 32 terms (1) in the default graph 1024 times for each quad term (4): 510.179ms\n- Finding all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 485.932ms\n- Counting all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 422.807ms\n- Finding all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.329s\n- Counting all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.334s\n- Finding all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 8.873s\n- Counting all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 17.947ms\n- Finding all 32 terms (1) filtered by graph 1024 times: 29.489ms\n- Counting all 32 terms (1) filtered by graph 1024 times: 3ms\n\n- Adding 1048576 quads: 1.174s\n* Memory usage for quads: 104MB\n- Counting the 32 distinct objects of one predicate in one graph 32768 times: 26.901ms\n- Counting the 1024 distinct predicate-object pairs of one graph 1024 times: 1.427ms\n\n\n# 3 Map indexes (number) OPT-QUERY-NODES\n\n- Adding 2097152 triples to the default graph: 2.264s\n* Memory usage for triples: 183MB\n- Finding all 2097152 triples in the default graph 2097152 times (0 variables): 1.231s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable): 480.4ms\n- Finding all 2097152 triples in the default graph 384 times (2 variables): 652.75ms\n- Finding all 2097152 triples as bindings in the default graph 384 times (2 variables): 4.427s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable) via a stream: 1.084s\n- Counting all 2097152 triples in the default graph 32768 times (1 variable): 33.808ms\n\n- Adding 2097152 triples about 131072 entities, with distinct values: 10.733s\n* Memory usage for entities: 2205MB\n- Counting the 131072 triples of each of 16 properties 64 times: 15.365s\n- Finding the 131072 triples of a property sorted on their value, for 4 properties: 1.290s\n\n- Adding 262144 triples to the default graph: 287.549ms\n* Memory usage for triples: 32MB\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables): 233.272ms\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables) via a stream: 243.624ms\n- Finding all 262144 triples as bindings in the default graph 4096 times (1 variable): 57.363ms\n\n- Adding 1048576 quads: 1.351s\n* Memory usage for quads: 104MB\n- Finding all 1048576 quads 131072 times: 352.736ms\n\n- Adding 262144 quoted triples: 536.532ms\n* Memory usage for quoted triples: 80MB\n- Finding all 262144 quoted triples 192 times: 4.805s\n\n- Adding 1048576 quads: 1.306s\n* Memory usage for quads: 104MB\n- Finding all 32 terms (1) in the default graph 1024 times for each quad term (4): 562.172ms\n- Counting all 32 terms (1) in the default graph 1024 times for each quad term (4): 523.233ms\n- Finding all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 550.206ms\n- Counting all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 460.894ms\n- Finding all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.430s\n- Counting all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.280s\n- Finding all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 9.252s\n- Counting all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 17.725ms\n- Finding all 32 terms (1) filtered by graph 1024 times: 11.606ms\n- Counting all 32 terms (1) filtered by graph 1024 times: 0.647ms\n\n- Adding 1048576 quads: 1.276s\n* Memory usage for quads: 104MB\n- Counting the 32 distinct objects of one predicate in one graph 32768 times: 22.451ms\n- Counting the 1024 distinct predicate-object pairs of one graph 1024 times: 0.943ms\n\n- Adding 1048576 quads: 1.380s\n* Memory usage for quads: 104MB\n- Finding all 32 nodes 1024 times: 4.433ms\n\n\n# 3 Record indexes (number) OPT-INGEST\n\n- Adding 2097152 triples to the default graph: 1.278s\n* Memory usage for triples: 66MB\n- Finding all 2097152 triples in the default graph 2097152 times (0 variables): 1.298s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable): 621.901ms\n- Finding all 2097152 triples in the default graph 384 times (2 variables): 576.163ms\n- Finding all 2097152 triples as bindings in the default graph 384 times (2 variables): 4.842s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable) via a stream: 1.023s\n- Counting all 2097152 triples in the default graph 32768 times (1 variable): 89.262ms\n\n- Adding 2097152 triples about 131072 entities, with distinct values: 13.865s\n* Memory usage for entities: 2882MB\n- Counting the 131072 triples of each of 16 properties 64 times: 1:31.940 (m:ss.mmm)\n- Finding the 131072 triples of a property sorted on their value, for 4 properties: 2.376s\n\n- Adding 262144 triples to the default graph: 245.998ms\n* Memory usage for triples: 19MB\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables): 319.766ms\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables) via a stream: 286.664ms\n- Finding all 262144 triples as bindings in the default graph 4096 times (1 variable): 72.285ms\n\n- Adding 1048576 quads: 837.046ms\n* Memory usage for quads: 51MB\n- Finding all 1048576 quads 131072 times: 698.727ms\n\n- Adding 262144 quoted triples: 572.197ms\n* Memory usage for quoted triples: 95MB\n- Finding all 262144 quoted triples 192 times: 6.339s\n\n- Adding 1048576 quads: 885.23ms\n* Memory usage for quads: 51MB\n- Finding all 32 terms (1) in the default graph 1024 times for each quad term (4): 621.173ms\n- Counting all 32 terms (1) in the default graph 1024 times for each quad term (4): 654.899ms\n- Finding all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 518.019ms\n- Counting all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 508.884ms\n- Finding all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.704s\n- Counting all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.370s\n- Finding all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 8.266s\n- Counting all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 192.279ms\n- Finding all 32 terms (1) filtered by graph 1024 times: 15.385ms\n- Counting all 32 terms (1) filtered by graph 1024 times: 1.606ms\n\n- Adding 1048576 quads: 956.09ms\n* Memory usage for quads: 51MB\n- Counting the 32 distinct objects of one predicate in one graph 32768 times: 38.431ms\n- Counting the 1024 distinct predicate-object pairs of one graph 1024 times: 14.803ms\n\n\n# 1 Map indexes (number) OPT-QUERY\n\n- Adding 2097152 triples to the default graph: 932.592ms\n* Memory usage for triples: 68MB\n- Finding all 2097152 triples in the default graph 2097152 times (0 variables): 1.313s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable): 1.197s\n- Finding all 2097152 triples in the default graph 384 times (2 variables): 1.260s\n- Finding all 2097152 triples as bindings in the default graph 384 times (2 variables): 5.541s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable) via a stream: 1.940s\n- Counting all 2097152 triples in the default graph 32768 times (1 variable): 456.312ms\n\n- Adding 2097152 triples about 131072 entities, with distinct values: 4.897s\n* Memory usage for entities: 910MB\n- Counting the 131072 triples of each of 16 properties 64 times: 50.358s\n- Finding the 131072 triples of a property sorted on their value, for 4 properties: 1.081s\n\n- Adding 262144 triples to the default graph: 136.807ms\n* Memory usage for triples: 18MB\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables): 338.236ms\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables) via a stream: 364.876ms\n- Finding all 262144 triples as bindings in the default graph 4096 times (1 variable): 53.574ms\n\n- Adding 1048576 quads: 492.125ms\n* Memory usage for quads: 42MB\n- Finding all 1048576 quads 131072 times: 775.604ms\n\n- Adding 262144 quoted triples: 220.17ms\n* Memory usage for quoted triples: 19MB\n- Finding all 262144 quoted triples 192 times: 5.465s\n\n\n# 1 Record indexes (number) OPT-INGEST\n\n- Adding 2097152 triples to the default graph: 738.458ms\n* Memory usage for triples: 29MB\n- Finding all 2097152 triples in the default graph 2097152 times (0 variables): 1.197s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable): 709.906ms\n- Finding all 2097152 triples in the default graph 384 times (2 variables): 659.367ms\n- Finding all 2097152 triples as bindings in the default graph 384 times (2 variables): 4.939s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable) via a stream: 1.468s\n- Counting all 2097152 triples in the default graph 32768 times (1 variable): 200.548ms\n\n- Adding 2097152 triples about 131072 entities, with distinct values: 5.353s\n* Memory usage for entities: 952MB\n- Counting the 131072 triples of each of 16 properties 64 times: 2:22.625 (m:ss.mmm)\n- Finding the 131072 triples of a property sorted on their value, for 4 properties: 1.837s\n\n- Adding 262144 triples to the default graph: 154.032ms\n* Memory usage for triples: 13MB\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables): 316.857ms\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables) via a stream: 332.859ms\n- Finding all 262144 triples as bindings in the default graph 4096 times (1 variable): 60.922ms\n\n- Adding 1048576 quads: 494.442ms\n* Memory usage for quads: 24MB\n- Finding all 1048576 quads 131072 times: 743.185ms\n\n- Adding 262144 quoted triples: 303.036ms\n* Memory usage for quoted triples: 15MB\n- Finding all 262144 quoted triples 192 times: 5.560s\n\n\n# 3 Nested Map Quoted indexes with indexed quoted dict (number) OPT-QUERY\n\n- Adding 2097152 triples to the default graph: 2.231s\n* Memory usage for triples: 183MB\n- Finding all 2097152 triples in the default graph 2097152 times (0 variables): 1.400s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable): 679.925ms\n- Finding all 2097152 triples in the default graph 384 times (2 variables): 730.314ms\n- Finding all 2097152 triples as bindings in the default graph 384 times (2 variables): 5.309s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable) via a stream: 1.219s\n- Counting all 2097152 triples in the default graph 32768 times (1 variable): 57.242ms\n\n- Adding 2097152 triples about 131072 entities, with distinct values: 9.850s\n* Memory usage for entities: 2126MB\n- Counting the 131072 triples of each of 16 properties 64 times: 16.952s\n- Finding the 131072 triples of a property sorted on their value, for 4 properties: 1.108s\n\n- Adding 262144 triples to the default graph: 325.635ms\n* Memory usage for triples: 33MB\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables): 290.228ms\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables) via a stream: 405.458ms\n- Finding all 262144 triples as bindings in the default graph 4096 times (1 variable): 71.758ms\n\n- Adding 1048576 quads: 1.332s\n* Memory usage for quads: 104MB\n- Finding all 1048576 quads 131072 times: 471.385ms\n\n- Adding 262144 quoted triples: 488.437ms\n* Memory usage for quoted triples: 82MB\n- Finding all 262144 quoted triples 192 times: 244.781ms\n\n- Adding 1048576 quads: 1.402s\n* Memory usage for quads: 104MB\n- Finding all 32 terms (1) in the default graph 1024 times for each quad term (4): 575.792ms\n- Counting all 32 terms (1) in the default graph 1024 times for each quad term (4): 557.989ms\n- Finding all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 418.991ms\n- Counting all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 491.759ms\n- Finding all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.608s\n- Counting all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.139s\n- Finding all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 8.861s\n- Counting all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 18.513ms\n- Finding all 32 terms (1) filtered by graph 1024 times: 19.122ms\n- Counting all 32 terms (1) filtered by graph 1024 times: 1.371ms\n\n- Adding 1048576 quads: 1.345s\n* Memory usage for quads: 104MB\n- Counting the 32 distinct objects of one predicate in one graph 32768 times: 25.287ms\n- Counting the 1024 distinct predicate-object pairs of one graph 1024 times: 1.263ms\n\n\n# 3 Nested Record Quoted indexes with indexed quoted dict (number) OPT-INGEST\n\n- Adding 2097152 triples to the default graph: 1.193s\n* Memory usage for triples: 67MB\n- Finding all 2097152 triples in the default graph 2097152 times (0 variables): 1.242s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable): 610.92ms\n- Finding all 2097152 triples in the default graph 384 times (2 variables): 643.465ms\n- Finding all 2097152 triples as bindings in the default graph 384 times (2 variables): 5.181s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable) via a stream: 1.177s\n- Counting all 2097152 triples in the default graph 32768 times (1 variable): 97.903ms\n\n- Adding 2097152 triples about 131072 entities, with distinct values: 15.466s\n* Memory usage for entities: 2883MB\n- Counting the 131072 triples of each of 16 properties 64 times: 1:32.261 (m:ss.mmm)\n- Finding the 131072 triples of a property sorted on their value, for 4 properties: 2.174s\n\n- Adding 262144 triples to the default graph: 224.721ms\n* Memory usage for triples: 19MB\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables): 268.113ms\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables) via a stream: 308.249ms\n- Finding all 262144 triples as bindings in the default graph 4096 times (1 variable): 79.793ms\n\n- Adding 1048576 quads: 878.911ms\n* Memory usage for quads: 51MB\n- Finding all 1048576 quads 131072 times: 631.065ms\n\n- Adding 262144 quoted triples: 617.598ms\n* Memory usage for quoted triples: 96MB\n- Finding all 262144 quoted triples 192 times: 196.731ms\n\n- Adding 1048576 quads: 712.276ms\n* Memory usage for quads: 51MB\n- Finding all 32 terms (1) in the default graph 1024 times for each quad term (4): 592.919ms\n- Counting all 32 terms (1) in the default graph 1024 times for each quad term (4): 495.088ms\n- Finding all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 497.046ms\n- Counting all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 453.546ms\n- Finding all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.941s\n- Counting all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.502s\n- Finding all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 9.256s\n- Counting all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 217.883ms\n- Finding all 32 terms (1) filtered by graph 1024 times: 18.396ms\n- Counting all 32 terms (1) filtered by graph 1024 times: 1.741ms\n\n- Adding 1048576 quads: 926.556ms\n* Memory usage for quads: 51MB\n- Counting the 32 distinct objects of one predicate in one graph 32768 times: 41.968ms\n- Counting the 1024 distinct predicate-object pairs of one graph 1024 times: 12.916ms\n\n\n# 3 sorted-blocks indexes with indexed quoted dict (number) OPT-BULK\n\n- Adding 2097152 triples to the default graph: 3.391s\n* Memory usage for triples: 109MB\n- Finding all 2097152 triples in the default graph 2097152 times (0 variables): 2.420s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable): 650.569ms\n- Finding all 2097152 triples in the default graph 384 times (2 variables): 668.24ms\n- Finding all 2097152 triples as bindings in the default graph 384 times (2 variables): 4.319s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable) via a stream: 1.209s\n- Counting all 2097152 triples in the default graph 32768 times (1 variable): 132.175ms\n\n- Adding 2097152 triples about 131072 entities, with distinct values: 9.076s\n* Memory usage for entities: 609MB\n- Counting the 131072 triples of each of 16 properties 64 times: 13.426ms\n- Finding the 131072 triples of a property sorted on their value, for 4 properties: 585.511ms\n\n- Adding 262144 triples to the default graph: 396.331ms\n* Memory usage for triples: 23MB\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables): 261.556ms\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables) via a stream: 563.314ms\n- Finding all 262144 triples as bindings in the default graph 4096 times (1 variable): 59.663ms\n\n- Adding 1048576 quads: 2.021s\n* Memory usage for quads: 60MB\n- Finding all 1048576 quads 131072 times: 625.513ms\n\n- Adding 262144 quoted triples: 612.037ms\n* Memory usage for quoted triples: 27MB\n- Finding all 262144 quoted triples 192 times: 294.106ms\n\n- Adding 1048576 quads: 2.096s\n* Memory usage for quads: 60MB\n- Finding all 32 terms (1) in the default graph 1024 times for each quad term (4): 1.739s\n- Counting all 32 terms (1) in the default graph 1024 times for each quad term (4): 1.726s\n- Finding all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 1.035s\n- Counting all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 1.046s\n- Finding all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 1.928s\n- Counting all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 1.440s\n- Finding all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 7.219s\n- Counting all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 34.167ms\n- Finding all 32 terms (1) filtered by graph 1024 times: 22.566ms\n- Counting all 32 terms (1) filtered by graph 1024 times: 2.567ms\n\n- Adding 1048576 quads: 1.660s\n* Memory usage for quads: 60MB\n- Counting the 32 distinct objects of one predicate in one graph 32768 times: 48.689ms\n- Counting the 1024 distinct predicate-object pairs of one graph 1024 times: 15.094ms\n\n\n# 3 sorted-blocks indexes with indexed quoted dict (number), added one by one\n\n- Adding 2097152 triples to the default graph: 6.132s\n* Memory usage for triples: 165MB\n- Finding all 2097152 triples in the default graph 2097152 times (0 variables): 2.829s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable): 710.681ms\n- Finding all 2097152 triples in the default graph 384 times (2 variables): 653.852ms\n- Finding all 2097152 triples as bindings in the default graph 384 times (2 variables): 4.458s\n- Finding all 2097152 triples in the default graph 32768 times (1 variable) via a stream: 1.201s\n- Counting all 2097152 triples in the default graph 32768 times (1 variable): 127.791ms\n\n- Adding 2097152 triples about 131072 entities, with distinct values: 2:07.153 (m:ss.mmm)\n* Memory usage for entities: 653MB\n- Counting the 131072 triples of each of 16 properties 64 times: 2.815ms\n- Finding the 131072 triples of a property sorted on their value, for 4 properties: 1.031s\n\n- Adding 262144 triples to the default graph: 594.6ms\n* Memory usage for triples: 30MB\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables): 303.508ms\n- Finding all 262144 triples as bindings in the default graph 192 times (2 variables) via a stream: 604.365ms\n- Finding all 262144 triples as bindings in the default graph 4096 times (1 variable): 70.647ms\n\n- Adding 1048576 quads: 3.019s\n* Memory usage for quads: 82MB\n- Finding all 1048576 quads 131072 times: 629.297ms\n\n- Adding 262144 quoted triples: 710.869ms\n* Memory usage for quoted triples: 31MB\n- Finding all 262144 quoted triples 192 times: 234.424ms\n\n- Adding 1048576 quads: 3.097s\n* Memory usage for quads: 82MB\n- Finding all 32 terms (1) in the default graph 1024 times for each quad term (4): 2.486s\n- Counting all 32 terms (1) in the default graph 1024 times for each quad term (4): 2.318s\n- Finding all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 1.098s\n- Counting all 1024 terms (2) in the default graph 32 times for each sequential quad term pair (4): 1.072s\n- Finding all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 2.062s\n- Counting all 32768 terms (3) in the default graph 8 times for each sequential quad term triple (4): 1.576s\n- Finding all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 7.428s\n- Counting all 1048576 terms (4) in the default graph 4 times for each sequential quad term quad (4): 26.072ms\n- Finding all 32 terms (1) filtered by graph 1024 times: 17.693ms\n- Counting all 32 terms (1) filtered by graph 1024 times: 1.639ms\n\n- Adding 1048576 quads: 2.970s\n* Memory usage for quads: 82MB\n- Counting the 32 distinct objects of one predicate in one graph 32768 times: 45.936ms\n- Counting the 1024 distinct predicate-object pairs of one graph 1024 times: 11.733ms\n```\n\n## License\nThis software is written by [Ruben Taelman](http://rubensworks.net/).\n\nThis code is released under the [MIT license](http://opensource.org/licenses/MIT).\n","readmeFilename":"README.md"}