@littlebigbrain/client 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -10
- package/dist/client.d.ts +18 -21
- package/dist/client.js +63 -59
- package/dist/namespaces.d.ts +10 -1
- package/dist/namespaces.js +12 -0
- package/dist/schema.d.ts +472 -36
- package/dist/types.d.ts +13 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -68,19 +68,19 @@ const accepted = await lbb.submitImport(records(), {
|
|
|
68
68
|
});
|
|
69
69
|
const completed = await lbb.waitForImportJob(accepted.job_id);
|
|
70
70
|
console.log(completed.state, completed.committed_commit_seq);
|
|
71
|
-
if (completed.committed_commit_seq != null) {
|
|
72
|
-
await lbb.waitForIndexLineage(completed.committed_commit_seq);
|
|
73
|
-
}
|
|
74
71
|
```
|
|
75
72
|
|
|
76
73
|
`records()` may be an iterable or async iterable. Success means every grouped
|
|
77
|
-
commit is durable and
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
`index_caught_up=false` metadata until its own deadline, including on an
|
|
81
|
-
RDF-only deployment. An empty iterable is rejected locally before an import
|
|
74
|
+
commit is durable and immediately queryable by a strong SPARQL read. The same
|
|
75
|
+
commits advance the graph's coalesced RDF reconciliation fence; waiting for base
|
|
76
|
+
compaction is optional. An empty iterable is rejected locally before an import
|
|
82
77
|
POST is sent.
|
|
83
78
|
|
|
79
|
+
For several RDF documents, `facts.importRdfMany(...)` automatically defers
|
|
80
|
+
intermediate reconciliation and triggers it on the last document. Call
|
|
81
|
+
`graph.waitForPublished(result.finalSequence)` only when the caller needs the
|
|
82
|
+
immutable base itself to cover the import; strong reads need no waiter.
|
|
83
|
+
|
|
84
84
|
**Time-travel read.** Pin a SPARQL read to a past instant — results reflect the graph as it was then:
|
|
85
85
|
|
|
86
86
|
```ts
|
|
@@ -101,8 +101,10 @@ const { rows } = await lbb.sparqlRows({
|
|
|
101
101
|
## Errors & retries
|
|
102
102
|
|
|
103
103
|
Methods return parsed JSON and throw `LbbError` (with `status`, `code`, `message`, `param`, `requestId`, `docUrl`) on any non-2xx response. Safe reads and idempotency-keyed writes retry `429`/`5xx` and network failures with full-jitter backoff, bounded by a retry budget (`retryBudgetMs`, default 60s) rather than a fixed count, and honor `Retry-After` — a terminal error the server marks non-retryable surfaces immediately. Use `rawRequest()` for response headers, request id, and retry/timing metadata.
|
|
104
|
-
`
|
|
105
|
-
|
|
104
|
+
`waitForPublished(...)` is an optional, deadline-bounded maintenance poller for
|
|
105
|
+
workflows that want the immutable RDF base itself to cover a commit. Strong
|
|
106
|
+
SPARQL does not need it: acknowledged commits are queryable immediately from
|
|
107
|
+
the branch head's base-plus-delta lineage.
|
|
106
108
|
|
|
107
109
|
## More
|
|
108
110
|
|
package/dist/client.d.ts
CHANGED
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
import type { DurableImportSource, ImportLine, LbbClientOptions, ListResponse, RawLbbResponse, ReadConsistencyOptions, RdfImportOptions, Schemas, SearchConsistency, SparqlResults } from "./types.js";
|
|
1
|
+
import type { DurableImportSource, ImportLine, LbbClientOptions, ListResponse, RawLbbResponse, ReadConsistencyOptions, RdfImportDocument, RdfImportManyResult, RdfImportOptions, Schemas, SearchConsistency, SparqlResults } from "./types.js";
|
|
2
2
|
import { type CallOptions, type RequestOptions } from "./transport.js";
|
|
3
3
|
import { EntityNamespace, GraphNamespace, OntologyNamespace, QueryNamespace, SchemaNamespace, SearchNamespace } from "./namespaces.js";
|
|
4
4
|
export { parseSparqlResults } from "./types.js";
|
|
5
|
-
export type { AttributeFilter, AttributeFilterOp, AttributeFilterValue, EntityAttributeFilterOptions, EntityPropertiesLine, DurableImportLine, DurableImportSource, FetchLike, FlatProperties, ImportLine, LbbClientOptions, LbbRequestEvent, LbbResponseEvent, LbbRetryEvent, LbbErrorPayload, ListResponse, RawLbbResponse, ReadConsistencyOptions, RdfImportOptions, Schemas, SearchConsistency, SparqlResults, SparqlResultsJson, SparqlTerm, CommitRequest, CommitResponse, Entity, EntitySelector, GraphMetadata, GraphSummary, SchemaView, Snapshot, } from "./types.js";
|
|
5
|
+
export type { AttributeFilter, AttributeFilterOp, AttributeFilterValue, EntityAttributeFilterOptions, EntityPropertiesLine, DurableImportLine, DurableImportSource, FetchLike, FlatProperties, ImportLine, LbbClientOptions, LbbRequestEvent, LbbResponseEvent, LbbRetryEvent, LbbErrorPayload, ListResponse, RawLbbResponse, ReadConsistencyOptions, RdfImportDocument, RdfImportManyResult, RdfImportOptions, Schemas, SearchConsistency, SparqlResults, SparqlResultsJson, SparqlTerm, CommitRequest, CommitResponse, Entity, EntitySelector, GraphMetadata, GraphSummary, SchemaView, Snapshot, } from "./types.js";
|
|
6
6
|
export { LbbCapabilityError, LbbError } from "./transport.js";
|
|
7
7
|
export type { CallOptions, Query, QueryValue, RequestOptions, } from "./transport.js";
|
|
8
8
|
export { EntityNamespace, FactsNamespace, GraphNamespace, OntologyNamespace, QueryNamespace, SchemaNamespace, SearchNamespace, } from "./namespaces.js";
|
|
9
|
-
export interface IndexLineageObservation {
|
|
10
|
-
metadata: Schemas["GraphMetadataResponse"];
|
|
11
|
-
lineage: Schemas["IndexLineage"];
|
|
12
|
-
buildCommit?: string;
|
|
13
|
-
replica?: string;
|
|
14
|
-
requestId?: string;
|
|
15
|
-
attempts: number;
|
|
16
|
-
elapsedMs: number;
|
|
17
|
-
}
|
|
18
9
|
/**
|
|
19
10
|
* A typed HTTP client for a little big brain graph server. One instance is scoped to a
|
|
20
11
|
* single graph/branch; construct another for a different scope. All methods
|
|
@@ -137,6 +128,8 @@ export declare class LbbClient {
|
|
|
137
128
|
* properties on the subject Resource.
|
|
138
129
|
*/
|
|
139
130
|
importRdf(rdf: string, opts?: RdfImportOptions): Promise<Schemas["GraphRdfImportResponse"]>;
|
|
131
|
+
/** Import several RDF documents as truth-only chunks, then advance one final publication fence. */
|
|
132
|
+
importRdfMany(documents: readonly RdfImportDocument[], opts?: RdfImportOptions): Promise<RdfImportManyResult>;
|
|
140
133
|
/**
|
|
141
134
|
* Retract specific edges and/or every edge touching given entities. Appends
|
|
142
135
|
* superseding retract events rather than deleting — history stays visible in an
|
|
@@ -405,7 +398,7 @@ export declare class LbbClient {
|
|
|
405
398
|
* `groups[].keys`.
|
|
406
399
|
*/
|
|
407
400
|
sparql(body: Schemas["SparqlSelectRequest"], opts?: ReadConsistencyOptions): Promise<Schemas["SparqlSelectResponse"]>;
|
|
408
|
-
/** SPARQL 1.1 query from text (SELECT/ASK) over the live graph; `results` is SPARQL 1.1 Query Results JSON. The text dialect carries `consistency`/`min_indexed_seq` on the URL. */
|
|
401
|
+
/** SPARQL 1.1 query from text (SELECT/ASK) over the live graph; `results` is SPARQL 1.1 Query Results JSON. The text dialect carries `consistency`/`min_indexed_seq` on the URL; a floor with no explicit consistency implies a strong base-plus-delta read. */
|
|
409
402
|
sparqlText(body: Schemas["SparqlTextRequest"], opts?: ReadConsistencyOptions): Promise<Schemas["SparqlTextResponse"]>;
|
|
410
403
|
/**
|
|
411
404
|
* Run a SPARQL 1.1 text query and return parsed results — the ergonomic
|
|
@@ -468,21 +461,25 @@ export declare class LbbClient {
|
|
|
468
461
|
metadata(opts?: {
|
|
469
462
|
includeIndexes?: boolean;
|
|
470
463
|
}): Promise<Schemas["GraphMetadataResponse"]>;
|
|
471
|
-
/**
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
* deployment; `metadata.index_caught_up` is the generation-level readiness
|
|
476
|
-
* signal used by bulk loaders.
|
|
477
|
-
*/
|
|
478
|
-
waitForIndexLineage(targetSeq: number, opts?: {
|
|
464
|
+
/** Automatic publication lifecycle, available before the first generation exists. */
|
|
465
|
+
publicationStatus(): Promise<Schemas["PublicationStatusResponse"]>;
|
|
466
|
+
/** Wait until background reconciliation folds `targetSeq` into the RDF base. */
|
|
467
|
+
waitForPublished(targetSeq: number, opts?: {
|
|
479
468
|
timeoutMs?: number;
|
|
480
469
|
pollIntervalMs?: number;
|
|
481
|
-
}): Promise<
|
|
470
|
+
}): Promise<Schemas["PublicationStatusResponse"]>;
|
|
482
471
|
/** Graph counts and type/relation buckets. Carries `consistency`/`min_indexed_seq` on the URL. */
|
|
483
472
|
summary(opts?: ReadConsistencyOptions): Promise<Schemas["GraphSummaryResponse"]>;
|
|
484
473
|
/** Pinned published read root and its query/conformance lag against one coherent head. */
|
|
485
474
|
readSnapshot(): Promise<Schemas["PublishedReadStatusResponse"]>;
|
|
475
|
+
/**
|
|
476
|
+
* Compact observed RDF schema attached to the immutable published base:
|
|
477
|
+
* class populations, resource- and literal-valued predicate counts, and
|
|
478
|
+
* bounded OWL/RDFS statements. `literal_predicate_counts` is `null` when
|
|
479
|
+
* the stored summary artifact predates the field; the next full summary
|
|
480
|
+
* rebuild fills it.
|
|
481
|
+
*/
|
|
482
|
+
schemaSummary(): Promise<Schemas["RdfSchemaSummaryResponse"]>;
|
|
486
483
|
/** List the graphs (and branches) under the scoped tenant. */
|
|
487
484
|
listGraphs(): Promise<Schemas["GraphListResponse"]>;
|
|
488
485
|
}
|
package/dist/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { parseSparqlResults } from "./types.js";
|
|
2
2
|
import { bodyMarksTerminal, errorCodeFromBody, fullJitterBackoffMs, parseLbbError, parseResponseJson, retryAllowed, retryableStatus, retryDelayMs, sleep, } from "./transport.js";
|
|
3
|
-
import { LbbCapabilityError
|
|
3
|
+
import { LbbCapabilityError } from "./transport.js";
|
|
4
4
|
import { EntityNamespace, GraphNamespace, OntologyNamespace, QueryNamespace, SchemaNamespace, SearchNamespace, } from "./namespaces.js";
|
|
5
5
|
export { parseSparqlResults } from "./types.js";
|
|
6
6
|
export { LbbCapabilityError, LbbError } from "./transport.js";
|
|
@@ -563,6 +563,30 @@ export class LbbClient {
|
|
|
563
563
|
idempotencyKey: opts.idempotencyKey ?? this.idempotencyKey("import-rdf"),
|
|
564
564
|
});
|
|
565
565
|
}
|
|
566
|
+
/** Import several RDF documents as truth-only chunks, then advance one final publication fence. */
|
|
567
|
+
async importRdfMany(documents, opts = {}) {
|
|
568
|
+
if (documents.length === 0) {
|
|
569
|
+
throw new RangeError("importRdfMany requires at least one document");
|
|
570
|
+
}
|
|
571
|
+
const imports = [];
|
|
572
|
+
for (const [index, document] of documents.entries()) {
|
|
573
|
+
const merged = { ...opts, ...document.options };
|
|
574
|
+
const idempotencyKey = merged.idempotencyKey
|
|
575
|
+
? `${merged.idempotencyKey}:${index + 1}`
|
|
576
|
+
: undefined;
|
|
577
|
+
imports.push(await this.importRdf(document.rdf, {
|
|
578
|
+
...merged,
|
|
579
|
+
idempotencyKey,
|
|
580
|
+
build: index === documents.length - 1,
|
|
581
|
+
}));
|
|
582
|
+
}
|
|
583
|
+
const final = imports[imports.length - 1];
|
|
584
|
+
return {
|
|
585
|
+
imports,
|
|
586
|
+
finalSequence: final?.committed_commit_seq ?? undefined,
|
|
587
|
+
publication: final?.published_generation,
|
|
588
|
+
};
|
|
589
|
+
}
|
|
566
590
|
/**
|
|
567
591
|
* Retract specific edges and/or every edge touching given entities. Appends
|
|
568
592
|
* superseding retract events rather than deleting — history stays visible in an
|
|
@@ -940,7 +964,7 @@ export class LbbClient {
|
|
|
940
964
|
body: this.mergeReadConsistency(body, opts),
|
|
941
965
|
});
|
|
942
966
|
}
|
|
943
|
-
/** SPARQL 1.1 query from text (SELECT/ASK) over the live graph; `results` is SPARQL 1.1 Query Results JSON. The text dialect carries `consistency`/`min_indexed_seq` on the URL. */
|
|
967
|
+
/** SPARQL 1.1 query from text (SELECT/ASK) over the live graph; `results` is SPARQL 1.1 Query Results JSON. The text dialect carries `consistency`/`min_indexed_seq` on the URL; a floor with no explicit consistency implies a strong base-plus-delta read. */
|
|
944
968
|
sparqlText(body, opts) {
|
|
945
969
|
return this.request("POST", "/v1/query/sparql-text", {
|
|
946
970
|
body,
|
|
@@ -1038,68 +1062,38 @@ export class LbbClient {
|
|
|
1038
1062
|
},
|
|
1039
1063
|
});
|
|
1040
1064
|
}
|
|
1041
|
-
/**
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1065
|
+
/** Automatic publication lifecycle, available before the first generation exists. */
|
|
1066
|
+
publicationStatus() {
|
|
1067
|
+
return this.request("GET", "/v1/graph/publication-status");
|
|
1068
|
+
}
|
|
1069
|
+
/** Wait until background reconciliation folds `targetSeq` into the RDF base. */
|
|
1070
|
+
async waitForPublished(targetSeq, opts = {}) {
|
|
1071
|
+
if (!Number.isSafeInteger(targetSeq) || targetSeq < 0) {
|
|
1072
|
+
throw new RangeError("targetSeq must be a non-negative safe integer");
|
|
1073
|
+
}
|
|
1074
|
+
const timeoutMs = opts.timeoutMs ?? 30_000;
|
|
1075
|
+
const pollIntervalMs = opts.pollIntervalMs ?? 250;
|
|
1076
|
+
if (!Number.isFinite(timeoutMs) || timeoutMs < 0) {
|
|
1077
|
+
throw new RangeError("timeoutMs must be a non-negative number");
|
|
1078
|
+
}
|
|
1079
|
+
if (!Number.isFinite(pollIntervalMs) || pollIntervalMs < 0) {
|
|
1080
|
+
throw new RangeError("pollIntervalMs must be a non-negative number");
|
|
1081
|
+
}
|
|
1082
|
+
const deadline = Date.now() + timeoutMs;
|
|
1050
1083
|
let last;
|
|
1051
1084
|
while (true) {
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
// legitimately take longer than that secondary cap.
|
|
1056
|
-
last = await this.rawRequest("GET", "/v1/graph/metadata", {
|
|
1057
|
-
maxRetries: 0,
|
|
1058
|
-
});
|
|
1085
|
+
last = await this.publicationStatus();
|
|
1086
|
+
if (last.state === "blocked") {
|
|
1087
|
+
throw new Error(`publication blocked at ${last.current_stage ?? "unknown stage"}: ${last.retry.message}`);
|
|
1059
1088
|
}
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
retryableStatus(error.status) &&
|
|
1063
|
-
error.retryable !== false;
|
|
1064
|
-
const retryableTransportError = error instanceof Error && !(error instanceof LbbError);
|
|
1065
|
-
if (!retryableHttpError && !retryableTransportError)
|
|
1066
|
-
throw error;
|
|
1067
|
-
const now = Date.now();
|
|
1068
|
-
if (now >= deadline) {
|
|
1069
|
-
throw new Error(`index lineage did not reach ${targetSeq} before timeout (last_error=${error.message})`, { cause: error });
|
|
1070
|
-
}
|
|
1071
|
-
const retryAfterMs = error instanceof LbbError
|
|
1072
|
-
? (error.retryAfterSeconds ?? 0) * 1_000
|
|
1073
|
-
: 0;
|
|
1074
|
-
await sleep(Math.min(Math.max(opts.pollIntervalMs ?? 250, retryAfterMs), deadline - now));
|
|
1075
|
-
continue;
|
|
1076
|
-
}
|
|
1077
|
-
const lineage = last.data.index_lineage;
|
|
1078
|
-
const servedAt = last.data.snapshot.served_at_seq;
|
|
1079
|
-
if (lineage != null &&
|
|
1080
|
-
servedAt != null &&
|
|
1081
|
-
servedAt >= targetSeq &&
|
|
1082
|
-
(last.data.index_caught_up === true ||
|
|
1083
|
-
(lineage.bm25_indexed_commit_seq != null &&
|
|
1084
|
-
lineage.bm25_indexed_commit_seq >= targetSeq &&
|
|
1085
|
-
lineage.ann_indexed_commit_seq != null &&
|
|
1086
|
-
lineage.ann_indexed_commit_seq >= targetSeq))) {
|
|
1087
|
-
return {
|
|
1088
|
-
metadata: last.data,
|
|
1089
|
-
lineage,
|
|
1090
|
-
buildCommit: last.headers?.get("lbb-build-commit") ?? undefined,
|
|
1091
|
-
replica: last.headers?.get("lbb-replica") ?? undefined,
|
|
1092
|
-
requestId: last.requestId,
|
|
1093
|
-
attempts: last.attempts,
|
|
1094
|
-
elapsedMs: last.elapsedMs,
|
|
1095
|
-
};
|
|
1089
|
+
if (last.state === "current" && last.published_seq >= targetSeq) {
|
|
1090
|
+
return last;
|
|
1096
1091
|
}
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
throw new Error(`index lineage did not reach ${targetSeq} before timeout (build=${build}, replica=${replica}, last=${JSON.stringify(last.data.index_lineage)})`);
|
|
1092
|
+
const now = Date.now();
|
|
1093
|
+
if (now >= deadline) {
|
|
1094
|
+
throw new Error(`publication did not reach ${targetSeq} before timeout (state=${last.state}, head=${last.head_seq}, target=${last.target_seq}, published=${last.published_seq}, stage=${last.current_stage ?? "unknown"})`);
|
|
1101
1095
|
}
|
|
1102
|
-
await sleep(
|
|
1096
|
+
await sleep(Math.min(Math.max(pollIntervalMs, last.retry.retry_after_ms), deadline - now));
|
|
1103
1097
|
}
|
|
1104
1098
|
}
|
|
1105
1099
|
/** Graph counts and type/relation buckets. Carries `consistency`/`min_indexed_seq` on the URL. */
|
|
@@ -1112,6 +1106,16 @@ export class LbbClient {
|
|
|
1112
1106
|
readSnapshot() {
|
|
1113
1107
|
return this.request("GET", "/v1/graph/read-snapshot");
|
|
1114
1108
|
}
|
|
1109
|
+
/**
|
|
1110
|
+
* Compact observed RDF schema attached to the immutable published base:
|
|
1111
|
+
* class populations, resource- and literal-valued predicate counts, and
|
|
1112
|
+
* bounded OWL/RDFS statements. `literal_predicate_counts` is `null` when
|
|
1113
|
+
* the stored summary artifact predates the field; the next full summary
|
|
1114
|
+
* rebuild fills it.
|
|
1115
|
+
*/
|
|
1116
|
+
schemaSummary() {
|
|
1117
|
+
return this.request("GET", "/v1/graph/schema-summary");
|
|
1118
|
+
}
|
|
1115
1119
|
/** List the graphs (and branches) under the scoped tenant. */
|
|
1116
1120
|
listGraphs() {
|
|
1117
1121
|
return this.request("GET", "/v1/graphs");
|
package/dist/namespaces.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { LbbClient } from "./client.js";
|
|
2
2
|
import type { CallOptions } from "./transport.js";
|
|
3
|
-
import { type EntityAttributeFilterOptions, type ImportLine, type ReadConsistencyOptions, type RdfImportOptions, type Schemas } from "./types.js";
|
|
3
|
+
import { type EntityAttributeFilterOptions, type ImportLine, type ReadConsistencyOptions, type RdfImportDocument, type RdfImportManyResult, type RdfImportOptions, type Schemas } from "./types.js";
|
|
4
4
|
export declare class GraphNamespace {
|
|
5
5
|
private readonly client;
|
|
6
6
|
readonly facts: FactsNamespace;
|
|
@@ -11,6 +11,13 @@ export declare class GraphNamespace {
|
|
|
11
11
|
readonly search: SearchNamespace;
|
|
12
12
|
constructor(client: LbbClient);
|
|
13
13
|
branch(name: string): GraphNamespace;
|
|
14
|
+
/** Publication lifecycle for this graph/branch, including pre-first-publish state. */
|
|
15
|
+
publicationStatus(): Promise<Schemas["PublicationStatusResponse"]>;
|
|
16
|
+
/** Wait until this graph/branch has an exact generation covering `targetSeq`. */
|
|
17
|
+
waitForPublished(targetSeq: number, opts?: {
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
pollIntervalMs?: number;
|
|
20
|
+
}): Promise<Schemas["PublicationStatusResponse"]>;
|
|
14
21
|
create(opts?: CallOptions): Promise<Schemas["CreateGraphResponse"]>;
|
|
15
22
|
delete(opts: {
|
|
16
23
|
confirm: string;
|
|
@@ -39,6 +46,8 @@ export declare class FactsNamespace {
|
|
|
39
46
|
* predicates and literal term details are preserved as edge metadata.
|
|
40
47
|
*/
|
|
41
48
|
importRdf(rdf: string, opts?: CallOptions & RdfImportOptions): Promise<Schemas["GraphRdfImportResponse"]>;
|
|
49
|
+
/** Import several RDF documents and enqueue publication only for the final commit. */
|
|
50
|
+
importRdfMany(documents: readonly RdfImportDocument[], opts?: RdfImportOptions): Promise<RdfImportManyResult>;
|
|
42
51
|
}
|
|
43
52
|
/**
|
|
44
53
|
* Relevance-label storage. The query surfaces this namespace once fronted were
|
package/dist/namespaces.js
CHANGED
|
@@ -35,6 +35,14 @@ export class GraphNamespace {
|
|
|
35
35
|
branch(name) {
|
|
36
36
|
return new GraphNamespace(this.client.withScope({ branch: name }));
|
|
37
37
|
}
|
|
38
|
+
/** Publication lifecycle for this graph/branch, including pre-first-publish state. */
|
|
39
|
+
publicationStatus() {
|
|
40
|
+
return this.client.publicationStatus();
|
|
41
|
+
}
|
|
42
|
+
/** Wait until this graph/branch has an exact generation covering `targetSeq`. */
|
|
43
|
+
waitForPublished(targetSeq, opts = {}) {
|
|
44
|
+
return this.client.waitForPublished(targetSeq, opts);
|
|
45
|
+
}
|
|
38
46
|
create(opts = {}) {
|
|
39
47
|
return this.client.request("POST", "/v1/graph/create", opts);
|
|
40
48
|
}
|
|
@@ -120,6 +128,10 @@ export class FactsNamespace {
|
|
|
120
128
|
},
|
|
121
129
|
});
|
|
122
130
|
}
|
|
131
|
+
/** Import several RDF documents and enqueue publication only for the final commit. */
|
|
132
|
+
importRdfMany(documents, opts = {}) {
|
|
133
|
+
return this.client.importRdfMany(documents, opts);
|
|
134
|
+
}
|
|
123
135
|
}
|
|
124
136
|
/**
|
|
125
137
|
* Relevance-label storage. The query surfaces this namespace once fronted were
|
package/dist/schema.d.ts
CHANGED
|
@@ -381,6 +381,23 @@ export interface paths {
|
|
|
381
381
|
patch?: never;
|
|
382
382
|
trace?: never;
|
|
383
383
|
};
|
|
384
|
+
"/v1/graph/publication-status": {
|
|
385
|
+
parameters: {
|
|
386
|
+
query?: never;
|
|
387
|
+
header?: never;
|
|
388
|
+
path?: never;
|
|
389
|
+
cookie?: never;
|
|
390
|
+
};
|
|
391
|
+
/** Automatic publication lifecycle and exact read watermarks */
|
|
392
|
+
get: operations["get_v1_graph_publication_status"];
|
|
393
|
+
put?: never;
|
|
394
|
+
post?: never;
|
|
395
|
+
delete?: never;
|
|
396
|
+
options?: never;
|
|
397
|
+
head?: never;
|
|
398
|
+
patch?: never;
|
|
399
|
+
trace?: never;
|
|
400
|
+
};
|
|
384
401
|
"/v1/graph/read-snapshot": {
|
|
385
402
|
parameters: {
|
|
386
403
|
query?: never;
|
|
@@ -432,6 +449,23 @@ export interface paths {
|
|
|
432
449
|
patch?: never;
|
|
433
450
|
trace?: never;
|
|
434
451
|
};
|
|
452
|
+
"/v1/graph/schema-summary": {
|
|
453
|
+
parameters: {
|
|
454
|
+
query?: never;
|
|
455
|
+
header?: never;
|
|
456
|
+
path?: never;
|
|
457
|
+
cookie?: never;
|
|
458
|
+
};
|
|
459
|
+
/** Compact observed RDF schema attached to the immutable F3 base */
|
|
460
|
+
get: operations["get_v1_graph_schema_summary"];
|
|
461
|
+
put?: never;
|
|
462
|
+
post?: never;
|
|
463
|
+
delete?: never;
|
|
464
|
+
options?: never;
|
|
465
|
+
head?: never;
|
|
466
|
+
patch?: never;
|
|
467
|
+
trace?: never;
|
|
468
|
+
};
|
|
435
469
|
"/v1/graph/summary": {
|
|
436
470
|
parameters: {
|
|
437
471
|
query?: never;
|
|
@@ -798,7 +832,7 @@ export interface paths {
|
|
|
798
832
|
path?: never;
|
|
799
833
|
cookie?: never;
|
|
800
834
|
};
|
|
801
|
-
/** Read the
|
|
835
|
+
/** Read the immutable branch-owned ontology-conformance sidecar selected by the F3 checksum and schema identity */
|
|
802
836
|
get: operations["get_v1_ontology_conformance"];
|
|
803
837
|
put?: never;
|
|
804
838
|
post?: never;
|
|
@@ -817,7 +851,7 @@ export interface paths {
|
|
|
817
851
|
};
|
|
818
852
|
get?: never;
|
|
819
853
|
put?: never;
|
|
820
|
-
/**
|
|
854
|
+
/** Define or additively evolve a graph ontology, or preview the exact result without mutation */
|
|
821
855
|
post: operations["post_v1_ontology_define"];
|
|
822
856
|
delete?: never;
|
|
823
857
|
options?: never;
|
|
@@ -1325,8 +1359,25 @@ export interface components {
|
|
|
1325
1359
|
/** @description Whether the relation is transitive (default false). */
|
|
1326
1360
|
transitive?: boolean;
|
|
1327
1361
|
};
|
|
1362
|
+
/**
|
|
1363
|
+
* @description Add direct parent classes to an existing entity type. All named classes
|
|
1364
|
+
* must already exist, or be declared earlier in the same request with
|
|
1365
|
+
* `add_entity_type`. Existing links are skipped, so the op is idempotent.
|
|
1366
|
+
* Removing a parent is not additive and requires an explicit migration.
|
|
1367
|
+
*/
|
|
1368
|
+
AddSuperTypesOp: {
|
|
1369
|
+
/** @description Entity type whose direct parents should grow. */
|
|
1370
|
+
entity_type: string;
|
|
1371
|
+
/**
|
|
1372
|
+
* @description discriminator enum property added by openapi-typescript
|
|
1373
|
+
* @enum {string}
|
|
1374
|
+
*/
|
|
1375
|
+
op: "add_super_types";
|
|
1376
|
+
/** @description Direct parent entity-type names to add. */
|
|
1377
|
+
super_types: string[];
|
|
1378
|
+
};
|
|
1328
1379
|
/** @description Governed proposal operation restricted to additive ontology changes. */
|
|
1329
|
-
AdditiveOntologyEvolveOp: components["schemas"]["WidenRelationOp"] | components["schemas"]["AddEntityTypeOp"] | components["schemas"]["
|
|
1380
|
+
AdditiveOntologyEvolveOp: components["schemas"]["WidenRelationOp"] | components["schemas"]["AddEntityTypeOp"] | components["schemas"]["AddSuperTypesOp"] | components["schemas"]["AddRelationOp"];
|
|
1330
1381
|
/** @description Additive-only ontology proposal helper for structured-output systems. */
|
|
1331
1382
|
AdditiveOntologyEvolveRequest: {
|
|
1332
1383
|
ops: components["schemas"]["AdditiveOntologyEvolveOp"][];
|
|
@@ -3758,6 +3809,12 @@ export interface components {
|
|
|
3758
3809
|
* difference is refused with a typed error naming the route that applies it.
|
|
3759
3810
|
*/
|
|
3760
3811
|
OntologyDefineRequest: {
|
|
3812
|
+
/**
|
|
3813
|
+
* @description Preview the exact definition without creating a graph, writing an
|
|
3814
|
+
* ontology object, or changing the graph head. Equivalent to the
|
|
3815
|
+
* `?dry_run=true` query parameter; either signal enables preview mode.
|
|
3816
|
+
*/
|
|
3817
|
+
dry_run?: boolean;
|
|
3761
3818
|
/** @description Import format hint. `auto` (the default) sniffs the content. */
|
|
3762
3819
|
format?: string | null;
|
|
3763
3820
|
/**
|
|
@@ -3773,29 +3830,28 @@ export interface components {
|
|
|
3773
3830
|
};
|
|
3774
3831
|
OntologyDefineResponse: {
|
|
3775
3832
|
/**
|
|
3776
|
-
* @description True when this call wrote a new ontology version,
|
|
3777
|
-
*
|
|
3778
|
-
*
|
|
3779
|
-
*
|
|
3833
|
+
* @description True when this call wrote a new ontology version, or when a dry run
|
|
3834
|
+
* predicts that it would. False when the proposed ontology already matched
|
|
3835
|
+
* the active one, which is what makes re-running the same bootstrap request
|
|
3836
|
+
* a no-op.
|
|
3780
3837
|
*
|
|
3781
|
-
*
|
|
3782
|
-
*
|
|
3783
|
-
* property field both set it, even though neither appears in the
|
|
3784
|
-
* class-and-relation schema diff.
|
|
3838
|
+
* A widened relation domain or range and a new property field both set it,
|
|
3839
|
+
* even though neither appears in the class-and-relation schema diff.
|
|
3785
3840
|
*/
|
|
3786
3841
|
changed?: boolean;
|
|
3787
3842
|
/**
|
|
3788
|
-
* @description The additive changes this call applied
|
|
3789
|
-
*
|
|
3843
|
+
* @description The additive changes this call applied, or would apply during a dry run,
|
|
3844
|
+
* to an existing graph's ontology. Empty on create and no-op.
|
|
3790
3845
|
*/
|
|
3791
3846
|
changes?: components["schemas"]["SchemaDiffEntry"][];
|
|
3847
|
+
/** @description True when this response is a preview and no durable state changed. */
|
|
3848
|
+
dry_run?: boolean;
|
|
3792
3849
|
entity_types: components["schemas"]["OntologyTermView"][];
|
|
3793
3850
|
format: string;
|
|
3794
3851
|
graph: components["schemas"]["GraphKey"];
|
|
3795
3852
|
/**
|
|
3796
|
-
* @description True when this call created the graph head
|
|
3797
|
-
*
|
|
3798
|
-
* signal for the define route.
|
|
3853
|
+
* @description True when this call created the graph head, or when a dry run predicts
|
|
3854
|
+
* that the real definition would create it.
|
|
3799
3855
|
*/
|
|
3800
3856
|
graph_created: boolean;
|
|
3801
3857
|
merged_default: boolean;
|
|
@@ -3840,6 +3896,8 @@ export interface components {
|
|
|
3840
3896
|
OntologyDraftStatus: "draft" | "validated" | "promoted" | "rejected";
|
|
3841
3897
|
/** @description The full definition of one entity type (class) in the active ontology. */
|
|
3842
3898
|
OntologyEntityTypeView: {
|
|
3899
|
+
/** @description Canonical query IRI minted by Little Big Brain for this class identity. */
|
|
3900
|
+
iri?: string;
|
|
3843
3901
|
name: string;
|
|
3844
3902
|
properties: components["schemas"]["OntologyPropertyView"][];
|
|
3845
3903
|
/** Format: int64 */
|
|
@@ -3848,6 +3906,17 @@ export interface components {
|
|
|
3848
3906
|
resolvable: boolean;
|
|
3849
3907
|
/** Format: int64 */
|
|
3850
3908
|
since_version: number;
|
|
3909
|
+
/**
|
|
3910
|
+
* @description Frozen class identity used by commits and the RDF projection. This is
|
|
3911
|
+
* unique even when imported vocabularies reuse the same local name.
|
|
3912
|
+
*/
|
|
3913
|
+
stable_id?: string;
|
|
3914
|
+
/**
|
|
3915
|
+
* @description Direct parent classes (`rdfs:subClassOf`), named by their frozen
|
|
3916
|
+
* `stable_id`s. Clients can build the full class lattice without a SPARQL
|
|
3917
|
+
* scan or a second ontology lookup.
|
|
3918
|
+
*/
|
|
3919
|
+
super_types?: string[];
|
|
3851
3920
|
};
|
|
3852
3921
|
OntologyEvidenceSample: {
|
|
3853
3922
|
/** @description Stable connector/source reference; sample content is never used as identity. */
|
|
@@ -3866,7 +3935,7 @@ export interface components {
|
|
|
3866
3935
|
* the supported "ontology evolution" path; identity-breaking changes (removals,
|
|
3867
3936
|
* narrowing) still require an explicit expand→migrate→contract plan.
|
|
3868
3937
|
*/
|
|
3869
|
-
OntologyEvolveOp: components["schemas"]["WidenRelationOp"] | components["schemas"]["AddEntityTypeOp"] | components["schemas"]["AddRelationOp"] | components["schemas"]["AddPropertyOp"] | components["schemas"]["SetPropertyConstraintOp"] | components["schemas"]["RenameEntityTypeOp"] | components["schemas"]["RenameRelationOp"] | components["schemas"]["SetRelationInverseOp"] | components["schemas"]["SetRelationCardinalityOp"] | components["schemas"]["NarrowRelationOp"] | components["schemas"]["RemoveEntityTypeOp"] | components["schemas"]["RemoveRelationOp"];
|
|
3938
|
+
OntologyEvolveOp: components["schemas"]["WidenRelationOp"] | components["schemas"]["AddEntityTypeOp"] | components["schemas"]["AddSuperTypesOp"] | components["schemas"]["AddRelationOp"] | components["schemas"]["AddPropertyOp"] | components["schemas"]["SetPropertyConstraintOp"] | components["schemas"]["RenameEntityTypeOp"] | components["schemas"]["RenameRelationOp"] | components["schemas"]["SetRelationInverseOp"] | components["schemas"]["SetRelationCardinalityOp"] | components["schemas"]["NarrowRelationOp"] | components["schemas"]["RemoveEntityTypeOp"] | components["schemas"]["RemoveRelationOp"];
|
|
3870
3939
|
/**
|
|
3871
3940
|
* @description Apply a list of additive ontology changes in order, writing a new ontology
|
|
3872
3941
|
* version when anything actually changes. Ops are applied against the
|
|
@@ -4344,6 +4413,42 @@ export interface components {
|
|
|
4344
4413
|
/** @description Members of an `i64_set` field; canonicalized like `keyword_set`. */
|
|
4345
4414
|
i64_set: number[];
|
|
4346
4415
|
};
|
|
4416
|
+
PublicationRetryGuidance: {
|
|
4417
|
+
eventual_read_available: boolean;
|
|
4418
|
+
message: string;
|
|
4419
|
+
/** Format: int64 */
|
|
4420
|
+
retry_after_ms: number;
|
|
4421
|
+
};
|
|
4422
|
+
/**
|
|
4423
|
+
* @description Server-managed publication lifecycle for one graph epoch.
|
|
4424
|
+
* @enum {string}
|
|
4425
|
+
*/
|
|
4426
|
+
PublicationState: "current" | "queued" | "compacting" | "building" | "publishing" | "blocked";
|
|
4427
|
+
/**
|
|
4428
|
+
* @description One bounded status document for automatic exact-generation publication.
|
|
4429
|
+
* It is available before the first generation publishes, unlike
|
|
4430
|
+
* [`PublishedReadStatusResponse`], so SDKs can wait without probing SPARQL.
|
|
4431
|
+
*/
|
|
4432
|
+
PublicationStatusResponse: {
|
|
4433
|
+
current_stage?: string | null;
|
|
4434
|
+
/** Format: int64 */
|
|
4435
|
+
epoch: number;
|
|
4436
|
+
/** Format: int64 */
|
|
4437
|
+
head_generation: number;
|
|
4438
|
+
head_seq: components["schemas"]["CommitSeq"];
|
|
4439
|
+
/** Format: int64 */
|
|
4440
|
+
lag_commits: number;
|
|
4441
|
+
/** Format: int64 */
|
|
4442
|
+
last_progress_at_micros: number;
|
|
4443
|
+
/** Format: int64 */
|
|
4444
|
+
published_generation?: number | null;
|
|
4445
|
+
published_seq: components["schemas"]["CommitSeq"];
|
|
4446
|
+
retry: components["schemas"]["PublicationRetryGuidance"];
|
|
4447
|
+
state: components["schemas"]["PublicationState"];
|
|
4448
|
+
/** Format: int64 */
|
|
4449
|
+
target_head_generation: number;
|
|
4450
|
+
target_seq: components["schemas"]["CommitSeq"];
|
|
4451
|
+
};
|
|
4347
4452
|
/**
|
|
4348
4453
|
* @description Whether an import's deterministic published-generation job was newly
|
|
4349
4454
|
* queued or coalesced with equivalent pending work.
|
|
@@ -4467,6 +4572,52 @@ export interface components {
|
|
|
4467
4572
|
*/
|
|
4468
4573
|
rerank_raw_bytes_fetched?: number;
|
|
4469
4574
|
};
|
|
4575
|
+
/**
|
|
4576
|
+
* @description The RDF node kind of a bounded observed-schema statement object.
|
|
4577
|
+
* @enum {string}
|
|
4578
|
+
*/
|
|
4579
|
+
RdfSchemaObjectKind: "iri" | "blank_node" | "literal";
|
|
4580
|
+
/** @description One OWL/RDFS vocabulary or annotation statement retained for schema UIs. */
|
|
4581
|
+
RdfSchemaStatement: {
|
|
4582
|
+
object: string;
|
|
4583
|
+
object_kind: components["schemas"]["RdfSchemaObjectKind"];
|
|
4584
|
+
predicate: string;
|
|
4585
|
+
subject: string;
|
|
4586
|
+
};
|
|
4587
|
+
/**
|
|
4588
|
+
* @description Compact, immutable observed-schema artifact attached to one exact F3 base.
|
|
4589
|
+
*
|
|
4590
|
+
* This is the overview/read-model surface for Explorer and Ontology. It is
|
|
4591
|
+
* produced by maintenance while publishing F3 and is therefore cheap to read:
|
|
4592
|
+
* no request-time graph scan or base-plus-delta assembly is required.
|
|
4593
|
+
*/
|
|
4594
|
+
RdfSchemaSummaryResponse: {
|
|
4595
|
+
/**
|
|
4596
|
+
* @description Per-predicate totals of literal-valued statements, the data-property
|
|
4597
|
+
* sibling of `resource_predicate_counts`. `None` when the stored summary
|
|
4598
|
+
* artifact predates this field; the next full summary rebuild fills it.
|
|
4599
|
+
*/
|
|
4600
|
+
literal_predicate_counts?: components["schemas"]["RdfSchemaTermCount"][] | null;
|
|
4601
|
+
/** Format: int64 */
|
|
4602
|
+
ontology_version: number;
|
|
4603
|
+
resource_predicate_counts: components["schemas"]["RdfSchemaTermCount"][];
|
|
4604
|
+
snapshot: components["schemas"]["SnapshotView"];
|
|
4605
|
+
statements: components["schemas"]["RdfSchemaStatement"][];
|
|
4606
|
+
truncated: boolean;
|
|
4607
|
+
type_counts: components["schemas"]["RdfSchemaTermCount"][];
|
|
4608
|
+
};
|
|
4609
|
+
/**
|
|
4610
|
+
* @description One exact RDF term count in the compact observed-schema summary.
|
|
4611
|
+
*
|
|
4612
|
+
* `term` is the complete IRI rather than a display-local name. This keeps
|
|
4613
|
+
* foreign vocabularies unambiguous; clients may choose their own prefix or
|
|
4614
|
+
* local-name presentation.
|
|
4615
|
+
*/
|
|
4616
|
+
RdfSchemaTermCount: {
|
|
4617
|
+
/** Format: int64 */
|
|
4618
|
+
count: number;
|
|
4619
|
+
term: string;
|
|
4620
|
+
};
|
|
4470
4621
|
/**
|
|
4471
4622
|
* @description A page-region provenance anchor on a fact's evidence (region provenance
|
|
4472
4623
|
* §4.1/§6.4(b) BYO import): where the evidence appears in the source
|
|
@@ -4739,6 +4890,11 @@ export interface components {
|
|
|
4739
4890
|
};
|
|
4740
4891
|
SchemaAuditResult: {
|
|
4741
4892
|
component: string;
|
|
4893
|
+
/**
|
|
4894
|
+
* @description Nested results explaining a composite violation (`sh:detail`), e.g.
|
|
4895
|
+
* which constraint inside a `sh:node` shape the value node failed.
|
|
4896
|
+
*/
|
|
4897
|
+
details?: components["schemas"]["SchemaAuditResult"][];
|
|
4742
4898
|
focus_node: string;
|
|
4743
4899
|
message?: string | null;
|
|
4744
4900
|
result_path?: string | null;
|
|
@@ -4786,6 +4942,8 @@ export interface components {
|
|
|
4786
4942
|
/** @enum {string} */
|
|
4787
4943
|
SchemaChangeKind: "additive" | "restrictive" | "identity_breaking";
|
|
4788
4944
|
SchemaClassView: {
|
|
4945
|
+
/** @description Canonical query IRI minted by Little Big Brain for this class identity. */
|
|
4946
|
+
iri?: string;
|
|
4789
4947
|
name: string;
|
|
4790
4948
|
property_count: number;
|
|
4791
4949
|
/** Format: int64 */
|
|
@@ -4793,6 +4951,8 @@ export interface components {
|
|
|
4793
4951
|
/** Format: int64 */
|
|
4794
4952
|
since_version: number;
|
|
4795
4953
|
stable_id: string;
|
|
4954
|
+
/** @description Direct parent classes (`rdfs:subClassOf`), named by `stable_id`. */
|
|
4955
|
+
super_types?: string[];
|
|
4796
4956
|
};
|
|
4797
4957
|
/** @enum {string} */
|
|
4798
4958
|
SchemaCompatibilityVerdict: "compatible" | "restrictive" | "migration_required";
|
|
@@ -5767,11 +5927,13 @@ export interface components {
|
|
|
5767
5927
|
*/
|
|
5768
5928
|
SparqlCompareOp: "eq" | "ne" | "lt" | "le" | "gt" | "ge";
|
|
5769
5929
|
/**
|
|
5770
|
-
* @description
|
|
5771
|
-
*
|
|
5930
|
+
* @description Entailment regime applied to a conformant SPARQL query. The regime is
|
|
5931
|
+
* evaluated at query time as a closure-driven pattern rewrite over the
|
|
5932
|
+
* dataset's asserted schema triples; the published dataset itself stays
|
|
5933
|
+
* asserted-only.
|
|
5772
5934
|
* @enum {string}
|
|
5773
5935
|
*/
|
|
5774
|
-
SparqlEntailment: "subclass" | "none";
|
|
5936
|
+
SparqlEntailment: "owl" | "rdfs" | "subclass" | "none";
|
|
5775
5937
|
/**
|
|
5776
5938
|
* @description A FILTER over a solution: a comparison, or a boolean composition of filters.
|
|
5777
5939
|
* A comparison whose operands are unbound, incomparable, or a type mismatch is
|
|
@@ -5967,11 +6129,10 @@ export interface components {
|
|
|
5967
6129
|
/** @description WHERE: the conjunctive basic graph pattern (shares the analytic engine). */
|
|
5968
6130
|
patterns: components["schemas"]["AnalyticTriplePattern"][];
|
|
5969
6131
|
/**
|
|
5970
|
-
* @description
|
|
5971
|
-
*
|
|
5972
|
-
*
|
|
5973
|
-
*
|
|
5974
|
-
* is absent; it never forces an overlay reduce.
|
|
6132
|
+
* @description Not available on the published SPARQL surface: a branch's stored
|
|
6133
|
+
* inference rules already run at publish time, folding derived facts into
|
|
6134
|
+
* the asserted dataset every query reads. Requesting `reason: true`
|
|
6135
|
+
* returns a typed, non-retryable error.
|
|
5975
6136
|
*/
|
|
5976
6137
|
reason?: boolean;
|
|
5977
6138
|
/**
|
|
@@ -6032,10 +6193,13 @@ export interface components {
|
|
|
6032
6193
|
* RDF graph, not a results table).
|
|
6033
6194
|
*/
|
|
6034
6195
|
SparqlTextRequest: {
|
|
6196
|
+
as_of_commit_seq?: null | components["schemas"]["CommitSeq"];
|
|
6035
6197
|
/**
|
|
6036
|
-
* @description
|
|
6037
|
-
*
|
|
6038
|
-
*
|
|
6198
|
+
* @description Entailment regime. `None` (default) matches asserted triples only.
|
|
6199
|
+
* `Rdfs` applies the practical RDFS core at query time, `Subclass` the
|
|
6200
|
+
* class-only subset, and `Owl` the OWL profile on top of `Rdfs`. All
|
|
6201
|
+
* derive the closure from the pinned generation's asserted schema
|
|
6202
|
+
* triples.
|
|
6039
6203
|
*/
|
|
6040
6204
|
entailment?: components["schemas"]["SparqlEntailment"];
|
|
6041
6205
|
/**
|
|
@@ -6048,12 +6212,10 @@ export interface components {
|
|
|
6048
6212
|
/** @description The SPARQL query text (SELECT or ASK). */
|
|
6049
6213
|
query: string;
|
|
6050
6214
|
/**
|
|
6051
|
-
* @description
|
|
6052
|
-
*
|
|
6053
|
-
*
|
|
6054
|
-
*
|
|
6055
|
-
* reasoning—rule-derived facts plus `rdfs:subClassOf` type closure—once
|
|
6056
|
-
* maintenance publishes a compatible reasoned projection.
|
|
6215
|
+
* @description Not available on the published SPARQL surface: a branch's stored
|
|
6216
|
+
* inference rules already run at publish time, folding derived facts into
|
|
6217
|
+
* the asserted dataset every query reads. Requesting `reason: true`
|
|
6218
|
+
* returns a typed, non-retryable error.
|
|
6057
6219
|
*/
|
|
6058
6220
|
reason?: boolean;
|
|
6059
6221
|
};
|
|
@@ -10068,7 +10230,7 @@ export interface operations {
|
|
|
10068
10230
|
blank_node_scope?: string;
|
|
10069
10231
|
/** @description Entity type name for imported RDF resources (default Resource) */
|
|
10070
10232
|
resource_type?: string;
|
|
10071
|
-
/** @description Set false to defer
|
|
10233
|
+
/** @description Set false on intermediate chunks to defer eager publication. Each request still atomically commits a compacted truth segment and exact per-commit F3 delta; graph reconstruction, SHACL, and complete F3 construction run off-path. The server advances one coalesced safety fence when the deferred delta tail reaches 8 entries or 32 MiB, so a large stream cannot wedge itself. Omit build=false on the final chunk to advance the final fence. Default true. */
|
|
10072
10234
|
build?: string;
|
|
10073
10235
|
};
|
|
10074
10236
|
header?: {
|
|
@@ -10337,6 +10499,142 @@ export interface operations {
|
|
|
10337
10499
|
};
|
|
10338
10500
|
};
|
|
10339
10501
|
};
|
|
10502
|
+
get_v1_graph_publication_status: {
|
|
10503
|
+
parameters: {
|
|
10504
|
+
query?: {
|
|
10505
|
+
/** @description Graph name (default `main`) */
|
|
10506
|
+
graph?: string;
|
|
10507
|
+
/** @description Branch name (default `main`) */
|
|
10508
|
+
branch?: string;
|
|
10509
|
+
};
|
|
10510
|
+
header?: {
|
|
10511
|
+
/** @description API contract version to pin. Use `2026-07-23` for this beta-breaking shape. */
|
|
10512
|
+
"Lbb-Version"?: string;
|
|
10513
|
+
};
|
|
10514
|
+
path?: never;
|
|
10515
|
+
cookie?: never;
|
|
10516
|
+
};
|
|
10517
|
+
requestBody?: never;
|
|
10518
|
+
responses: {
|
|
10519
|
+
/** @description OK */
|
|
10520
|
+
200: {
|
|
10521
|
+
headers: {
|
|
10522
|
+
/** @description API contract version used for the response */
|
|
10523
|
+
"Lbb-Version"?: string;
|
|
10524
|
+
/** @description Request correlation id */
|
|
10525
|
+
"X-Request-Id"?: string;
|
|
10526
|
+
[name: string]: unknown;
|
|
10527
|
+
};
|
|
10528
|
+
content: {
|
|
10529
|
+
"application/json": components["schemas"]["PublicationStatusResponse"];
|
|
10530
|
+
};
|
|
10531
|
+
};
|
|
10532
|
+
/** @description Bad request */
|
|
10533
|
+
400: {
|
|
10534
|
+
headers: {
|
|
10535
|
+
/** @description API contract version used for the response */
|
|
10536
|
+
"Lbb-Version"?: string;
|
|
10537
|
+
/** @description Request correlation id */
|
|
10538
|
+
"X-Request-Id"?: string;
|
|
10539
|
+
[name: string]: unknown;
|
|
10540
|
+
};
|
|
10541
|
+
content: {
|
|
10542
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
10543
|
+
};
|
|
10544
|
+
};
|
|
10545
|
+
/** @description Unauthorized */
|
|
10546
|
+
401: {
|
|
10547
|
+
headers: {
|
|
10548
|
+
/** @description API contract version used for the response */
|
|
10549
|
+
"Lbb-Version"?: string;
|
|
10550
|
+
/** @description Request correlation id */
|
|
10551
|
+
"X-Request-Id"?: string;
|
|
10552
|
+
[name: string]: unknown;
|
|
10553
|
+
};
|
|
10554
|
+
content: {
|
|
10555
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
10556
|
+
};
|
|
10557
|
+
};
|
|
10558
|
+
/** @description Forbidden */
|
|
10559
|
+
403: {
|
|
10560
|
+
headers: {
|
|
10561
|
+
/** @description API contract version used for the response */
|
|
10562
|
+
"Lbb-Version"?: string;
|
|
10563
|
+
/** @description Request correlation id */
|
|
10564
|
+
"X-Request-Id"?: string;
|
|
10565
|
+
[name: string]: unknown;
|
|
10566
|
+
};
|
|
10567
|
+
content: {
|
|
10568
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
10569
|
+
};
|
|
10570
|
+
};
|
|
10571
|
+
/** @description Not found */
|
|
10572
|
+
404: {
|
|
10573
|
+
headers: {
|
|
10574
|
+
/** @description API contract version used for the response */
|
|
10575
|
+
"Lbb-Version"?: string;
|
|
10576
|
+
/** @description Request correlation id */
|
|
10577
|
+
"X-Request-Id"?: string;
|
|
10578
|
+
[name: string]: unknown;
|
|
10579
|
+
};
|
|
10580
|
+
content: {
|
|
10581
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
10582
|
+
};
|
|
10583
|
+
};
|
|
10584
|
+
/** @description Conflict */
|
|
10585
|
+
409: {
|
|
10586
|
+
headers: {
|
|
10587
|
+
/** @description API contract version used for the response */
|
|
10588
|
+
"Lbb-Version"?: string;
|
|
10589
|
+
/** @description Request correlation id */
|
|
10590
|
+
"X-Request-Id"?: string;
|
|
10591
|
+
[name: string]: unknown;
|
|
10592
|
+
};
|
|
10593
|
+
content: {
|
|
10594
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
10595
|
+
};
|
|
10596
|
+
};
|
|
10597
|
+
/** @description Rate limit exceeded */
|
|
10598
|
+
429: {
|
|
10599
|
+
headers: {
|
|
10600
|
+
/** @description API contract version used for the response */
|
|
10601
|
+
"Lbb-Version"?: string;
|
|
10602
|
+
/** @description Request correlation id */
|
|
10603
|
+
"X-Request-Id"?: string;
|
|
10604
|
+
[name: string]: unknown;
|
|
10605
|
+
};
|
|
10606
|
+
content: {
|
|
10607
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
10608
|
+
};
|
|
10609
|
+
};
|
|
10610
|
+
/** @description Internal server error */
|
|
10611
|
+
500: {
|
|
10612
|
+
headers: {
|
|
10613
|
+
/** @description API contract version used for the response */
|
|
10614
|
+
"Lbb-Version"?: string;
|
|
10615
|
+
/** @description Request correlation id */
|
|
10616
|
+
"X-Request-Id"?: string;
|
|
10617
|
+
[name: string]: unknown;
|
|
10618
|
+
};
|
|
10619
|
+
content: {
|
|
10620
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
10621
|
+
};
|
|
10622
|
+
};
|
|
10623
|
+
/** @description Service unavailable */
|
|
10624
|
+
503: {
|
|
10625
|
+
headers: {
|
|
10626
|
+
/** @description API contract version used for the response */
|
|
10627
|
+
"Lbb-Version"?: string;
|
|
10628
|
+
/** @description Request correlation id */
|
|
10629
|
+
"X-Request-Id"?: string;
|
|
10630
|
+
[name: string]: unknown;
|
|
10631
|
+
};
|
|
10632
|
+
content: {
|
|
10633
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
10634
|
+
};
|
|
10635
|
+
};
|
|
10636
|
+
};
|
|
10637
|
+
};
|
|
10340
10638
|
get_v1_graph_read_snapshot: {
|
|
10341
10639
|
parameters: {
|
|
10342
10640
|
query?: {
|
|
@@ -10761,6 +11059,142 @@ export interface operations {
|
|
|
10761
11059
|
};
|
|
10762
11060
|
};
|
|
10763
11061
|
};
|
|
11062
|
+
get_v1_graph_schema_summary: {
|
|
11063
|
+
parameters: {
|
|
11064
|
+
query?: {
|
|
11065
|
+
/** @description Graph name (default `main`) */
|
|
11066
|
+
graph?: string;
|
|
11067
|
+
/** @description Branch name (default `main`) */
|
|
11068
|
+
branch?: string;
|
|
11069
|
+
};
|
|
11070
|
+
header?: {
|
|
11071
|
+
/** @description API contract version to pin. Use `2026-07-23` for this beta-breaking shape. */
|
|
11072
|
+
"Lbb-Version"?: string;
|
|
11073
|
+
};
|
|
11074
|
+
path?: never;
|
|
11075
|
+
cookie?: never;
|
|
11076
|
+
};
|
|
11077
|
+
requestBody?: never;
|
|
11078
|
+
responses: {
|
|
11079
|
+
/** @description OK */
|
|
11080
|
+
200: {
|
|
11081
|
+
headers: {
|
|
11082
|
+
/** @description API contract version used for the response */
|
|
11083
|
+
"Lbb-Version"?: string;
|
|
11084
|
+
/** @description Request correlation id */
|
|
11085
|
+
"X-Request-Id"?: string;
|
|
11086
|
+
[name: string]: unknown;
|
|
11087
|
+
};
|
|
11088
|
+
content: {
|
|
11089
|
+
"application/json": components["schemas"]["RdfSchemaSummaryResponse"];
|
|
11090
|
+
};
|
|
11091
|
+
};
|
|
11092
|
+
/** @description Bad request */
|
|
11093
|
+
400: {
|
|
11094
|
+
headers: {
|
|
11095
|
+
/** @description API contract version used for the response */
|
|
11096
|
+
"Lbb-Version"?: string;
|
|
11097
|
+
/** @description Request correlation id */
|
|
11098
|
+
"X-Request-Id"?: string;
|
|
11099
|
+
[name: string]: unknown;
|
|
11100
|
+
};
|
|
11101
|
+
content: {
|
|
11102
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
11103
|
+
};
|
|
11104
|
+
};
|
|
11105
|
+
/** @description Unauthorized */
|
|
11106
|
+
401: {
|
|
11107
|
+
headers: {
|
|
11108
|
+
/** @description API contract version used for the response */
|
|
11109
|
+
"Lbb-Version"?: string;
|
|
11110
|
+
/** @description Request correlation id */
|
|
11111
|
+
"X-Request-Id"?: string;
|
|
11112
|
+
[name: string]: unknown;
|
|
11113
|
+
};
|
|
11114
|
+
content: {
|
|
11115
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
11116
|
+
};
|
|
11117
|
+
};
|
|
11118
|
+
/** @description Forbidden */
|
|
11119
|
+
403: {
|
|
11120
|
+
headers: {
|
|
11121
|
+
/** @description API contract version used for the response */
|
|
11122
|
+
"Lbb-Version"?: string;
|
|
11123
|
+
/** @description Request correlation id */
|
|
11124
|
+
"X-Request-Id"?: string;
|
|
11125
|
+
[name: string]: unknown;
|
|
11126
|
+
};
|
|
11127
|
+
content: {
|
|
11128
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
11129
|
+
};
|
|
11130
|
+
};
|
|
11131
|
+
/** @description Not found */
|
|
11132
|
+
404: {
|
|
11133
|
+
headers: {
|
|
11134
|
+
/** @description API contract version used for the response */
|
|
11135
|
+
"Lbb-Version"?: string;
|
|
11136
|
+
/** @description Request correlation id */
|
|
11137
|
+
"X-Request-Id"?: string;
|
|
11138
|
+
[name: string]: unknown;
|
|
11139
|
+
};
|
|
11140
|
+
content: {
|
|
11141
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
11142
|
+
};
|
|
11143
|
+
};
|
|
11144
|
+
/** @description Conflict */
|
|
11145
|
+
409: {
|
|
11146
|
+
headers: {
|
|
11147
|
+
/** @description API contract version used for the response */
|
|
11148
|
+
"Lbb-Version"?: string;
|
|
11149
|
+
/** @description Request correlation id */
|
|
11150
|
+
"X-Request-Id"?: string;
|
|
11151
|
+
[name: string]: unknown;
|
|
11152
|
+
};
|
|
11153
|
+
content: {
|
|
11154
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
11155
|
+
};
|
|
11156
|
+
};
|
|
11157
|
+
/** @description Rate limit exceeded */
|
|
11158
|
+
429: {
|
|
11159
|
+
headers: {
|
|
11160
|
+
/** @description API contract version used for the response */
|
|
11161
|
+
"Lbb-Version"?: string;
|
|
11162
|
+
/** @description Request correlation id */
|
|
11163
|
+
"X-Request-Id"?: string;
|
|
11164
|
+
[name: string]: unknown;
|
|
11165
|
+
};
|
|
11166
|
+
content: {
|
|
11167
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
11168
|
+
};
|
|
11169
|
+
};
|
|
11170
|
+
/** @description Internal server error */
|
|
11171
|
+
500: {
|
|
11172
|
+
headers: {
|
|
11173
|
+
/** @description API contract version used for the response */
|
|
11174
|
+
"Lbb-Version"?: string;
|
|
11175
|
+
/** @description Request correlation id */
|
|
11176
|
+
"X-Request-Id"?: string;
|
|
11177
|
+
[name: string]: unknown;
|
|
11178
|
+
};
|
|
11179
|
+
content: {
|
|
11180
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
11181
|
+
};
|
|
11182
|
+
};
|
|
11183
|
+
/** @description Service unavailable */
|
|
11184
|
+
503: {
|
|
11185
|
+
headers: {
|
|
11186
|
+
/** @description API contract version used for the response */
|
|
11187
|
+
"Lbb-Version"?: string;
|
|
11188
|
+
/** @description Request correlation id */
|
|
11189
|
+
"X-Request-Id"?: string;
|
|
11190
|
+
[name: string]: unknown;
|
|
11191
|
+
};
|
|
11192
|
+
content: {
|
|
11193
|
+
"application/json": components["schemas"]["LbbErrorEnvelope"];
|
|
11194
|
+
};
|
|
11195
|
+
};
|
|
11196
|
+
};
|
|
11197
|
+
};
|
|
10764
11198
|
get_v1_graph_summary: {
|
|
10765
11199
|
parameters: {
|
|
10766
11200
|
query?: {
|
|
@@ -13988,7 +14422,7 @@ export interface operations {
|
|
|
13988
14422
|
graph?: string;
|
|
13989
14423
|
/** @description Branch name (default `main`) */
|
|
13990
14424
|
branch?: string;
|
|
13991
|
-
/** @description eventual (default) serves the
|
|
14425
|
+
/** @description eventual (default) serves the selected base sidecar; strong requires an exact-head sidecar with current ontology/shapes */
|
|
13992
14426
|
consistency?: string;
|
|
13993
14427
|
/** @description Maximum returned result rows; result_count remains exact */
|
|
13994
14428
|
limit?: string;
|
|
@@ -14128,6 +14562,8 @@ export interface operations {
|
|
|
14128
14562
|
graph?: string;
|
|
14129
14563
|
/** @description Branch name (default `main`) */
|
|
14130
14564
|
branch?: string;
|
|
14565
|
+
/** @description Validate and return the exact predicted definition without creating a graph, writing an ontology object, or changing the graph head */
|
|
14566
|
+
dry_run?: string;
|
|
14131
14567
|
};
|
|
14132
14568
|
header?: {
|
|
14133
14569
|
/** @description API contract version to pin. Use `2026-07-23` for this beta-breaking shape. */
|
package/dist/types.d.ts
CHANGED
|
@@ -53,13 +53,23 @@ export interface RdfImportOptions {
|
|
|
53
53
|
resourceType?: string;
|
|
54
54
|
edgeIdempotency?: "append" | "skip_unchanged";
|
|
55
55
|
/**
|
|
56
|
-
* Set `false` to
|
|
57
|
-
*
|
|
58
|
-
*
|
|
56
|
+
* Set `false` on intermediate chunks to suppress the publication enqueue.
|
|
57
|
+
* Every request still commits durable truth and an exact per-commit F3 delta;
|
|
58
|
+
* omit `build: false` on the last chunk to advance one final coalesced fence.
|
|
59
|
+
* Defaults to `true`.
|
|
59
60
|
*/
|
|
60
61
|
build?: boolean;
|
|
61
62
|
idempotencyKey?: string;
|
|
62
63
|
}
|
|
64
|
+
export interface RdfImportDocument {
|
|
65
|
+
rdf: string;
|
|
66
|
+
options?: RdfImportOptions;
|
|
67
|
+
}
|
|
68
|
+
export interface RdfImportManyResult {
|
|
69
|
+
imports: Schemas["GraphRdfImportResponse"][];
|
|
70
|
+
finalSequence?: number;
|
|
71
|
+
publication?: Schemas["GraphImportPublishedGenerationOutcome"] | null;
|
|
72
|
+
}
|
|
63
73
|
export type AttributeFilterOp = "eq" | "ne" | "lt" | "le" | "gt" | "ge";
|
|
64
74
|
export type AttributeFilterValue = string | number | boolean | {
|
|
65
75
|
dateTime: string;
|