← Documentation home

Canonical Markdown source · Oct 20, 2018

Linked Art Graph Partitioning

linked-art/partitioning.md · 75 lines · SHA-256 341aff71f753

Meta Museum now has a reusable partition planner for the hard case where a

valid Linked Art graph needs to be emitted as discrete Linked Art API endpoint

documents.

The implementation lives in `src/utils/linked-art-partitioner.ts` and is covered

by `tests/utils/linked-art-partitioner.test.ts`.

Policy

`Type`, `Set`, `Activity`, `Event`, `ProvenanceActivity`, textual/visual works,

and related Linked Art endpoint classes) become their own documents.

`_label`, rather than recursively embedding a whole graph.

as names, dimensions, timespans, provenance `part[]` activities, and lifecycle

activity summaries.

`_complete: false` through the existing completeness projection policy.

`member_of`, concept `broader`, and provenance activity `part[]` are bounded

with depth and visited-node checks.

graph node, the planner keeps the richer occurrence for the partition document.

  • First-class endpoint nodes (`HumanMadeObject`, `Person`, `Group`, `Place`,
  • Cross-document relationships become compact references with `id`, `type`, and
  • Owned embedded structures remain embedded where Linked Art expects them, such
  • Dereferenceable embedded activity/shared-structure nodes receive
  • Recursive relationships such as object `part`/`part_of`, set `member`/
  • When the same URI appears as both a compact nested reference and a richer

Evidence Fixtures

The regression suite covers:

event/activity documents.

referenced participants.

partition documents.

  • Recursive physical-object parts.
  • Reused activity nodes that are embedded as summaries and also emitted as full
  • Archival set hierarchy and concept `broader`/`member_of` recursion.
  • Provenance wrapper activities with embedded acquisition/payment parts and
  • Optional official Linked Art endpoint JSON Schema validation on generated

Current Boundary

The first production adoption paths are:

subclasses such as `Production` are routed through the Event/Activity endpoint

family, and relationships such as `used_specific_object`, `carried_out_by`,

and `produced` are bounded as compact references when they cross into other

endpoint documents.

recursion is bounded as compact Set references when the Set is available as a

stored record. Nested-only referenced sets still fall back to the entity-index

profile so relation discovery remains available.

`member_of` recursion is bounded as compact concept/set references while

preserving the concept endpoint family shape.

`part_of` recursion is bounded as compact `HumanMadeObject` references, while

owned lifecycle summaries such as `produced_by` stay embedded and their

cross-document actor/place/object relationships stay compact.

planner only after it rewrites the stored id to the canonical MetaMuseum detail

URL and rebuilds `equivalent[]`, then adopts the planner output only for

sensitive recursive/root-activity fields such as `part`, `part_of`,

`member_of`, `broader`, and `produced_by`. The broader record-detail envelope

keeps local metadata such as `_source`, `schemaVersion`, and `_links.self` so

existing consumers still receive a rich detail record rather than a thin

endpoint partition.

  • `/api/events/{id}` for ActivityStreams `linkedArt.id` dereferences. Activity
  • `/api/sets/{id}` for stored Set hierarchy records. `member` and `member_of`
  • `/api/concepts/{id}` for stored Concept hierarchy records. `broader` and
  • `/api/objects/{id}` for stored physical object records. Object `part` and
  • `/api/records/{id}` for canonical record detail responses. This route runs the

This is not yet the universal serialization path for every public route.

Existing endpoint serializers can adopt it incrementally. The next implementation

step is to route additional provider-specific/entity-detail serializers through

the same helper style only where planner output reduces duplicate case-by-case

recursion logic without weakening their public response contracts.