{"library":"rdf-test-suite","title":"RDF/SPARQL Test Suite Executor","description":"rdf-test-suite (current stable version 2.1.5) is a robust JavaScript/TypeScript command-line tool and library designed for executing W3C RDF and SPARQL test suites against any compatible JavaScript-based engine. It is actively maintained, with a development focus on broad test suite compatibility and modularity. Key differentiators include its support for a wide array of specifications such as SPARQL 1.0/1.1, RDF/XML, N-Triples, N-Quads, Turtle, TriG, JSON-LD (1.0/1.1), RDFa, Microdata, N3, and RDF-star/SPARQL-star, with a clear roadmap for expanding coverage. The tool itself functions as a runner, requiring users to provide their own JavaScript implementation of an RDF parser or SPARQL query engine that adheres to specific TypeScript interfaces (e.g., `IQueryEngine`, `IParser`) depending on the test suite being executed. It can output human-readable results to the console or machine-readable EARL reports for compliance tracking. Its modular architecture facilitates easy extension for new test cases or report formats.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install rdf-test-suite"],"cli":{"name":"rdf-test-suite.js","version":null}},"imports":["import { TestSuiteRunner } from 'rdf-test-suite';","import type { IQueryEngine } from 'rdf-test-suite';","import type { IParser } from 'rdf-test-suite';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { TestSuiteRunner, type IQueryEngine } from 'rdf-test-suite';\nimport { AsyncIterator } from 'asynciterator'; // Make sure 'asynciterator' is installed\n\n// Define a minimal, non-functional SPARQL query engine for demonstration.\n// In a real scenario, this would be your actual SPARQL engine implementation.\nconst dummyEngine: IQueryEngine = {\n  async query(queryString: string, queryContext?: any): Promise<AsyncIterator<any>> {\n    console.log(`[DummyEngine] Executing query (truncated): ${queryString.substring(0, 70)}...`);\n    return new AsyncIterator(); // Returns an empty iterator, most tests will fail or be skipped.\n  },\n  async update(updateString: string, updateContext?: any): Promise<void> {\n    console.log(`[DummyEngine] Executing update (truncated): ${updateString.substring(0, 70)}...`);\n    return Promise.resolve();\n  },\n};\n\nasync function runExampleTestSuite() {\n  const runner = new TestSuiteRunner();\n  const sparql11ManifestUrl = 'https://w3c.github.io/rdf-tests/sparql/sparql11/manifest-all.ttl';\n\n  console.log(`Starting SPARQL 1.1 test suite run against dummy engine...`);\n  console.log(`Manifest: ${sparql11ManifestUrl}`);\n\n  // Run the test suite and get an async iterator of results.\n  const results = await runner.runTestSuite(dummyEngine, sparql11ManifestUrl, {\n    verbose: false, // Set to true for more detailed console output\n    exitOnFail: false, // Continue even if tests fail\n  });\n\n  // Iterate over results and summarize\n  let passed = 0;\n  let failed = 0;\n  let skipped = 0;\n  for await (const result of results) {\n    if (result.type === 'test') {\n      if (result.skipped) {\n        skipped++;\n      } else if (result.error) {\n        failed++;\n      } else {\n        passed++;\n      }\n    }\n  }\n\n  console.log('\\n--- Summary ---');\n  console.log(`Tests Passed: ${passed}`);\n  console.log(`Tests Failed: ${failed}`);\n  console.log(`Tests Skipped: ${skipped}`);\n  console.log('Note: Most tests are expected to fail or be skipped with a dummy engine.');\n}\n\nrunExampleTestSuite().catch(console.error);","lang":"typescript","description":"Demonstrates programmatic execution of a SPARQL 1.1 test suite against a dummy query engine, logging a summary of the test results.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}