v1.2.0
Minor Changes
-
#9
381067bThanks @flyon! - Replaced internal query representation with a canonical backend-agnostic IR AST.SelectQuery,CreateQuery,UpdateQuery, andDeleteQueryare now typed IR objects withkinddiscriminators, compact shape/property ID references, and expression trees — replacing the previous ad-hoc nested arrays. The public Shape DSL is unchanged; what changed is whatIQuadStoreimplementations receive. Store result types (ResultRow,SelectResult,CreateResult,UpdateResult) are now exported. All factories exposebuild()as the primary method. Seedocumentation/intermediate-representation.mdfor the full IR reference and migration guidance. -
#14
b65e156Thanks @flyon! - Add SPARQL conversion layer — compiles Linked IR queries into executable SPARQL and maps results back to typed DSL objects.New exports from
@_linked/core/sparql:-
SparqlStore— abstract base class for SPARQL-backed stores. Extend it and implement two methods to connect any SPARQL 1.1 endpoint:import { SparqlStore } from "@_linked/core/sparql"; class MyStore extends SparqlStore { protected async executeSparqlSelect( sparql: string ): Promise<SparqlJsonResults> { /* ... */ } protected async executeSparqlUpdate(sparql: string): Promise<void> { /* ... */ } }
-
IR → SPARQL string convenience functions (full pipeline in one call):
selectToSparql(query, options?)— SelectQuery → SPARQL stringcreateToSparql(query, options?)— CreateQuery → SPARQL stringupdateToSparql(query, options?)— UpdateQuery → SPARQL stringdeleteToSparql(query, options?)— DeleteQuery → SPARQL string
-
IR → SPARQL algebra (for stores that want to inspect/optimize the algebra before serialization):
selectToAlgebra(query, options?)— returnsSparqlSelectPlancreateToAlgebra(query, options?)— returnsSparqlInsertDataPlanupdateToAlgebra(query, options?)— returnsSparqlDeleteInsertPlandeleteToAlgebra(query, options?)— returnsSparqlDeleteInsertPlan
-
Algebra → SPARQL string serialization:
selectPlanToSparql(plan, options?),insertDataPlanToSparql(plan, options?),deleteInsertPlanToSparql(plan, options?),deleteWherePlanToSparql(plan, options?)serializeAlgebraNode(node),serializeExpression(expr),serializeTerm(term)
-
Result mapping (SPARQL JSON results → typed DSL objects):
mapSparqlSelectResult(json, query)— handles flat/nested/aggregated results with XSD type coercionmapSparqlCreateResult(uri, query)— echoes created fields with generated URImapSparqlUpdateResult(query)— echoes updated fields
-
All algebra types re-exported:
SparqlTerm,SparqlTriple,SparqlAlgebraNode,SparqlExpression,SparqlSelectPlan,SparqlInsertDataPlan,SparqlDeleteInsertPlan,SparqlDeleteWherePlan,SparqlPlan,SparqlOptions, etc.
Bug fixes included:
- Fixed
isNodeReference()in MutationQuery.ts — nested creates with predefined IDs (e.g.,{id: '...', name: 'Bestie'}) now correctly insert entity data instead of only creating the link.
See SPARQL Algebra Layer docs for the full type reference, conversion rules, and store implementation guide.
-