Skip to content

Releases: Semantu/linked

v1.1.0

16 Feb 06:31
24ebe57

Choose a tag to compare

Minor Changes

  • #4 c35e686 Thanks @flyon! - - Added Shape.selectAll() plus nested selectAll() support on sub-queries.
    • Added inherited property deduplication via NodeShape.getUniquePropertyShapes() so subclass overrides win by label and are selected once.
    • Improved selectAll() type inference (including nested queries) and excluded base Shape keys from inferred results.
    • Added registration-time override guards: minCount cannot be lowered, maxCount cannot be increased, and nodeKind cannot be widened.
    • Fixed createPropertyShape to preserve explicit minCount: 0 / maxCount: 0.
    • Expanded tests and README documentation for selectAll, CRUD return types, and multi-value update semantics.

v1.0.0

11 Feb 07:28
8f06295

Choose a tag to compare

Major Changes

This is a rebranding + extraction release. It moves the core query/shape system into @_linked/core and removes RDF models and React-specific code.

Key changes:

  • New package name: import from @_linked/core instead of lincd.
  • Node references everywhere: use NodeReferenceValue = {id: string} everywhere. NamedNode does not exist in this package.
    • Before (LINCD.js):
      import { NamedNode } from "lincd/models";
      const name = NamedNode.getOrCreate("https://schema.org/name");
    • After (@_linked/core):
      import { createNameSpace } from "@_linked/core/utils/NameSpace";
      const schema = createNameSpace("https://schema.org/");
      const name = schema("name"); // {id: 'https://schema.org/name'}
  • Decorator paths: property decorators now require NodeReferenceValue paths (no strings, no NamedNode).
    • Before:
      @literalProperty({path: foaf.name})
    • After:
      const name = schema('name');
      @literalProperty({path: name})
  • Target class and node kinds: targetClass, datatype, nodeKind, etc. now take NodeReferenceValue.
    • Before:
      static targetClass = foaf.Person; // NamedNode
    • After:
      static targetClass = schema('Person'); // {id: string}
  • Query context: context values are NodeReferenceValue (or QResults) instead of RDF nodes.
    • Before:
      setQueryContext("user", NamedNode.getOrCreate(userId), Person);
    • After:
      setQueryContext("user", { id: userId }, Person);
  • No RDF models in core: NamedNode, Literal, BlankNode, Quad, Graph, and all RDF collections are not available in @_linked/core. Use a store package (e.g. @_linked/rdf-mem-store) if you need RDF models or quad-level access.
  • Shape instances: shape classes no longer carry RDF nodes or instance graph APIs. Decorated accessors register SHACL metadata but do not implement runtime get/set behavior.
  • Query tracing: query tracing is proxy-based (no TestNode/TraceShape).
  • SHACL metadata: node/property shapes are plain JS objects (QResult), not RDF triples.
  • Package registration: linkedPackage now stores package metadata as plain JS (PackageMetadata) and keeps legacy URI ids for compatibility.
  • Storage routing: LinkedStorage routes queries to an IQuadStore implementation (e.g. @_linked/rdf-mem-store).
  • Imports updated: ontology namespaces now return NodeReferenceValue objects, and decorators require NodeReferenceValue paths.