@undefineds.co/drizzle-solid 0.2.6
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/CHANGELOG-DRAFT.md +444 -0
- package/LICENSE +21 -0
- package/README.md +563 -0
- package/dist/core/aggregates.d.ts +19 -0
- package/dist/core/aggregates.d.ts.map +1 -0
- package/dist/core/aggregates.js +51 -0
- package/dist/core/aggregates.js.map +1 -0
- package/dist/core/ast-to-sparql.d.ts +62 -0
- package/dist/core/ast-to-sparql.d.ts.map +1 -0
- package/dist/core/ast-to-sparql.js +107 -0
- package/dist/core/ast-to-sparql.js.map +1 -0
- package/dist/core/compile-time-types.d.ts +37 -0
- package/dist/core/compile-time-types.d.ts.map +1 -0
- package/dist/core/compile-time-types.js +71 -0
- package/dist/core/compile-time-types.js.map +1 -0
- package/dist/core/comunica-patch.d.ts +7 -0
- package/dist/core/comunica-patch.d.ts.map +1 -0
- package/dist/core/comunica-patch.js +76 -0
- package/dist/core/comunica-patch.js.map +1 -0
- package/dist/core/conflict-resolution.d.ts +110 -0
- package/dist/core/conflict-resolution.d.ts.map +1 -0
- package/dist/core/conflict-resolution.js +251 -0
- package/dist/core/conflict-resolution.js.map +1 -0
- package/dist/core/discovery/composite-discovery.d.ts +18 -0
- package/dist/core/discovery/composite-discovery.d.ts.map +1 -0
- package/dist/core/discovery/composite-discovery.js +118 -0
- package/dist/core/discovery/composite-discovery.js.map +1 -0
- package/dist/core/discovery/index.d.ts +7 -0
- package/dist/core/discovery/index.d.ts.map +1 -0
- package/dist/core/discovery/index.js +23 -0
- package/dist/core/discovery/index.js.map +1 -0
- package/dist/core/discovery/interop-discovery.d.ts +36 -0
- package/dist/core/discovery/interop-discovery.d.ts.map +1 -0
- package/dist/core/discovery/interop-discovery.js +646 -0
- package/dist/core/discovery/interop-discovery.js.map +1 -0
- package/dist/core/discovery/interop-tables.d.ts +37 -0
- package/dist/core/discovery/interop-tables.d.ts.map +1 -0
- package/dist/core/discovery/interop-tables.js +68 -0
- package/dist/core/discovery/interop-tables.js.map +1 -0
- package/dist/core/discovery/interop-types.d.ts +36 -0
- package/dist/core/discovery/interop-types.d.ts.map +1 -0
- package/dist/core/discovery/interop-types.js +42 -0
- package/dist/core/discovery/interop-types.js.map +1 -0
- package/dist/core/discovery/provider-cache.d.ts +99 -0
- package/dist/core/discovery/provider-cache.d.ts.map +1 -0
- package/dist/core/discovery/provider-cache.js +296 -0
- package/dist/core/discovery/provider-cache.js.map +1 -0
- package/dist/core/discovery/typeindex-discovery.d.ts +30 -0
- package/dist/core/discovery/typeindex-discovery.d.ts.map +1 -0
- package/dist/core/discovery/typeindex-discovery.js +136 -0
- package/dist/core/discovery/typeindex-discovery.js.map +1 -0
- package/dist/core/discovery/types.d.ts +128 -0
- package/dist/core/discovery/types.d.ts.map +1 -0
- package/dist/core/discovery/types.js +3 -0
- package/dist/core/discovery/types.js.map +1 -0
- package/dist/core/execution/index.d.ts +14 -0
- package/dist/core/execution/index.d.ts.map +1 -0
- package/dist/core/execution/index.js +20 -0
- package/dist/core/execution/index.js.map +1 -0
- package/dist/core/execution/ldp-executor.d.ts +66 -0
- package/dist/core/execution/ldp-executor.d.ts.map +1 -0
- package/dist/core/execution/ldp-executor.js +584 -0
- package/dist/core/execution/ldp-executor.js.map +1 -0
- package/dist/core/execution/ldp-strategy.d.ts +53 -0
- package/dist/core/execution/ldp-strategy.d.ts.map +1 -0
- package/dist/core/execution/ldp-strategy.js +104 -0
- package/dist/core/execution/ldp-strategy.js.map +1 -0
- package/dist/core/execution/pod-executor-types.d.ts +9 -0
- package/dist/core/execution/pod-executor-types.d.ts.map +1 -0
- package/dist/core/execution/pod-executor-types.js +3 -0
- package/dist/core/execution/pod-executor-types.js.map +1 -0
- package/dist/core/execution/pod-executor.d.ts +59 -0
- package/dist/core/execution/pod-executor.d.ts.map +1 -0
- package/dist/core/execution/pod-executor.js +221 -0
- package/dist/core/execution/pod-executor.js.map +1 -0
- package/dist/core/execution/sparql-strategy.d.ts +80 -0
- package/dist/core/execution/sparql-strategy.d.ts.map +1 -0
- package/dist/core/execution/sparql-strategy.js +306 -0
- package/dist/core/execution/sparql-strategy.js.map +1 -0
- package/dist/core/execution/strategy-factory.d.ts +54 -0
- package/dist/core/execution/strategy-factory.d.ts.map +1 -0
- package/dist/core/execution/strategy-factory.js +78 -0
- package/dist/core/execution/strategy-factory.js.map +1 -0
- package/dist/core/execution/types.d.ts +80 -0
- package/dist/core/execution/types.d.ts.map +1 -0
- package/dist/core/execution/types.js +8 -0
- package/dist/core/execution/types.js.map +1 -0
- package/dist/core/expressions.d.ts +35 -0
- package/dist/core/expressions.d.ts.map +1 -0
- package/dist/core/expressions.js +53 -0
- package/dist/core/expressions.js.map +1 -0
- package/dist/core/federated/executor.d.ts +95 -0
- package/dist/core/federated/executor.d.ts.map +1 -0
- package/dist/core/federated/executor.js +425 -0
- package/dist/core/federated/executor.js.map +1 -0
- package/dist/core/federated/index.d.ts +3 -0
- package/dist/core/federated/index.d.ts.map +1 -0
- package/dist/core/federated/index.js +19 -0
- package/dist/core/federated/index.js.map +1 -0
- package/dist/core/federated/types.d.ts +69 -0
- package/dist/core/federated/types.d.ts.map +1 -0
- package/dist/core/federated/types.js +8 -0
- package/dist/core/federated/types.js.map +1 -0
- package/dist/core/notifications/channels/base-channel.d.ts +29 -0
- package/dist/core/notifications/channels/base-channel.d.ts.map +1 -0
- package/dist/core/notifications/channels/base-channel.js +63 -0
- package/dist/core/notifications/channels/base-channel.js.map +1 -0
- package/dist/core/notifications/channels/index.d.ts +4 -0
- package/dist/core/notifications/channels/index.d.ts.map +1 -0
- package/dist/core/notifications/channels/index.js +11 -0
- package/dist/core/notifications/channels/index.js.map +1 -0
- package/dist/core/notifications/channels/sse-channel.d.ts +50 -0
- package/dist/core/notifications/channels/sse-channel.d.ts.map +1 -0
- package/dist/core/notifications/channels/sse-channel.js +210 -0
- package/dist/core/notifications/channels/sse-channel.js.map +1 -0
- package/dist/core/notifications/channels/websocket-channel.d.ts +16 -0
- package/dist/core/notifications/channels/websocket-channel.d.ts.map +1 -0
- package/dist/core/notifications/channels/websocket-channel.js +87 -0
- package/dist/core/notifications/channels/websocket-channel.js.map +1 -0
- package/dist/core/notifications/index.d.ts +3 -0
- package/dist/core/notifications/index.d.ts.map +1 -0
- package/dist/core/notifications/index.js +6 -0
- package/dist/core/notifications/index.js.map +1 -0
- package/dist/core/notifications/notifications-client.d.ts +87 -0
- package/dist/core/notifications/notifications-client.d.ts.map +1 -0
- package/dist/core/notifications/notifications-client.js +460 -0
- package/dist/core/notifications/notifications-client.js.map +1 -0
- package/dist/core/notifications/types.d.ts +228 -0
- package/dist/core/notifications/types.d.ts.map +1 -0
- package/dist/core/notifications/types.js +7 -0
- package/dist/core/notifications/types.js.map +1 -0
- package/dist/core/pod-database.d.ts +383 -0
- package/dist/core/pod-database.d.ts.map +1 -0
- package/dist/core/pod-database.js +1212 -0
- package/dist/core/pod-database.js.map +1 -0
- package/dist/core/pod-dialect.d.ts +294 -0
- package/dist/core/pod-dialect.d.ts.map +1 -0
- package/dist/core/pod-dialect.js +1300 -0
- package/dist/core/pod-dialect.js.map +1 -0
- package/dist/core/pod-discovery.d.ts +20 -0
- package/dist/core/pod-discovery.d.ts.map +1 -0
- package/dist/core/pod-discovery.js +115 -0
- package/dist/core/pod-discovery.js.map +1 -0
- package/dist/core/pod-session.d.ts +44 -0
- package/dist/core/pod-session.d.ts.map +1 -0
- package/dist/core/pod-session.js +116 -0
- package/dist/core/pod-session.js.map +1 -0
- package/dist/core/pod-table.d.ts +710 -0
- package/dist/core/pod-table.d.ts.map +1 -0
- package/dist/core/pod-table.js +1300 -0
- package/dist/core/pod-table.js.map +1 -0
- package/dist/core/profile-manager.d.ts +90 -0
- package/dist/core/profile-manager.d.ts.map +1 -0
- package/dist/core/profile-manager.js +168 -0
- package/dist/core/profile-manager.js.map +1 -0
- package/dist/core/publish-manager.d.ts +90 -0
- package/dist/core/publish-manager.d.ts.map +1 -0
- package/dist/core/publish-manager.js +147 -0
- package/dist/core/publish-manager.js.map +1 -0
- package/dist/core/query-builders/delete-query-builder.d.ts +36 -0
- package/dist/core/query-builders/delete-query-builder.d.ts.map +1 -0
- package/dist/core/query-builders/delete-query-builder.js +144 -0
- package/dist/core/query-builders/delete-query-builder.js.map +1 -0
- package/dist/core/query-builders/helpers.d.ts +4 -0
- package/dist/core/query-builders/helpers.d.ts.map +1 -0
- package/dist/core/query-builders/helpers.js +30 -0
- package/dist/core/query-builders/helpers.js.map +1 -0
- package/dist/core/query-builders/index.d.ts +6 -0
- package/dist/core/query-builders/index.d.ts.map +1 -0
- package/dist/core/query-builders/index.js +12 -0
- package/dist/core/query-builders/index.js.map +1 -0
- package/dist/core/query-builders/insert-query-builder.d.ts +27 -0
- package/dist/core/query-builders/insert-query-builder.d.ts.map +1 -0
- package/dist/core/query-builders/insert-query-builder.js +128 -0
- package/dist/core/query-builders/insert-query-builder.js.map +1 -0
- package/dist/core/query-builders/select-query-builder.d.ts +106 -0
- package/dist/core/query-builders/select-query-builder.d.ts.map +1 -0
- package/dist/core/query-builders/select-query-builder.js +1264 -0
- package/dist/core/query-builders/select-query-builder.js.map +1 -0
- package/dist/core/query-builders/types.d.ts +37 -0
- package/dist/core/query-builders/types.d.ts.map +1 -0
- package/dist/core/query-builders/types.js +3 -0
- package/dist/core/query-builders/types.js.map +1 -0
- package/dist/core/query-builders/update-query-builder.d.ts +38 -0
- package/dist/core/query-builders/update-query-builder.d.ts.map +1 -0
- package/dist/core/query-builders/update-query-builder.js +168 -0
- package/dist/core/query-builders/update-query-builder.js.map +1 -0
- package/dist/core/query-conditions.d.ts +52 -0
- package/dist/core/query-conditions.d.ts.map +1 -0
- package/dist/core/query-conditions.js +134 -0
- package/dist/core/query-conditions.js.map +1 -0
- package/dist/core/rdf-constants.d.ts +16 -0
- package/dist/core/rdf-constants.d.ts.map +1 -0
- package/dist/core/rdf-constants.js +38 -0
- package/dist/core/rdf-constants.js.map +1 -0
- package/dist/core/rdf-schema-parser.d.ts +34 -0
- package/dist/core/rdf-schema-parser.d.ts.map +1 -0
- package/dist/core/rdf-schema-parser.js +143 -0
- package/dist/core/rdf-schema-parser.js.map +1 -0
- package/dist/core/resource-resolver/base-resolver.d.ts +29 -0
- package/dist/core/resource-resolver/base-resolver.d.ts.map +1 -0
- package/dist/core/resource-resolver/base-resolver.js +82 -0
- package/dist/core/resource-resolver/base-resolver.js.map +1 -0
- package/dist/core/resource-resolver/document-resolver.d.ts +20 -0
- package/dist/core/resource-resolver/document-resolver.d.ts.map +1 -0
- package/dist/core/resource-resolver/document-resolver.js +105 -0
- package/dist/core/resource-resolver/document-resolver.js.map +1 -0
- package/dist/core/resource-resolver/factory.d.ts +27 -0
- package/dist/core/resource-resolver/factory.d.ts.map +1 -0
- package/dist/core/resource-resolver/factory.js +58 -0
- package/dist/core/resource-resolver/factory.js.map +1 -0
- package/dist/core/resource-resolver/fragment-resolver.d.ts +20 -0
- package/dist/core/resource-resolver/fragment-resolver.d.ts.map +1 -0
- package/dist/core/resource-resolver/fragment-resolver.js +60 -0
- package/dist/core/resource-resolver/fragment-resolver.js.map +1 -0
- package/dist/core/resource-resolver/index.d.ts +11 -0
- package/dist/core/resource-resolver/index.d.ts.map +1 -0
- package/dist/core/resource-resolver/index.js +18 -0
- package/dist/core/resource-resolver/index.js.map +1 -0
- package/dist/core/resource-resolver/types.d.ts +57 -0
- package/dist/core/resource-resolver/types.d.ts.map +1 -0
- package/dist/core/resource-resolver/types.js +9 -0
- package/dist/core/resource-resolver/types.js.map +1 -0
- package/dist/core/runtime/pod-runtime.d.ts +34 -0
- package/dist/core/runtime/pod-runtime.d.ts.map +1 -0
- package/dist/core/runtime/pod-runtime.js +125 -0
- package/dist/core/runtime/pod-runtime.js.map +1 -0
- package/dist/core/schema/columns.d.ts +74 -0
- package/dist/core/schema/columns.d.ts.map +1 -0
- package/dist/core/schema/columns.js +295 -0
- package/dist/core/schema/columns.js.map +1 -0
- package/dist/core/schema/defs.d.ts +92 -0
- package/dist/core/schema/defs.d.ts.map +1 -0
- package/dist/core/schema/defs.js +43 -0
- package/dist/core/schema/defs.js.map +1 -0
- package/dist/core/schema/factories.d.ts +29 -0
- package/dist/core/schema/factories.d.ts.map +1 -0
- package/dist/core/schema/factories.js +117 -0
- package/dist/core/schema/factories.js.map +1 -0
- package/dist/core/schema/index.d.ts +9 -0
- package/dist/core/schema/index.d.ts.map +1 -0
- package/dist/core/schema/index.js +25 -0
- package/dist/core/schema/index.js.map +1 -0
- package/dist/core/schema/pod-table.d.ts +93 -0
- package/dist/core/schema/pod-table.d.ts.map +1 -0
- package/dist/core/schema/pod-table.js +294 -0
- package/dist/core/schema/pod-table.js.map +1 -0
- package/dist/core/schema/relations.d.ts +26 -0
- package/dist/core/schema/relations.d.ts.map +1 -0
- package/dist/core/schema/relations.js +36 -0
- package/dist/core/schema/relations.js.map +1 -0
- package/dist/core/schema/solid-schema.d.ts +19 -0
- package/dist/core/schema/solid-schema.d.ts.map +1 -0
- package/dist/core/schema/solid-schema.js +93 -0
- package/dist/core/schema/solid-schema.js.map +1 -0
- package/dist/core/schema/types.d.ts +45 -0
- package/dist/core/schema/types.d.ts.map +1 -0
- package/dist/core/schema/types.js +3 -0
- package/dist/core/schema/types.js.map +1 -0
- package/dist/core/schema/utils.d.ts +15 -0
- package/dist/core/schema/utils.d.ts.map +1 -0
- package/dist/core/schema/utils.js +44 -0
- package/dist/core/schema/utils.js.map +1 -0
- package/dist/core/select-plan.d.ts +45 -0
- package/dist/core/select-plan.d.ts.map +1 -0
- package/dist/core/select-plan.js +3 -0
- package/dist/core/select-plan.js.map +1 -0
- package/dist/core/services/pod-services.d.ts +41 -0
- package/dist/core/services/pod-services.d.ts.map +1 -0
- package/dist/core/services/pod-services.js +79 -0
- package/dist/core/services/pod-services.js.map +1 -0
- package/dist/core/shape/generator.d.ts +12 -0
- package/dist/core/shape/generator.d.ts.map +1 -0
- package/dist/core/shape/generator.js +109 -0
- package/dist/core/shape/generator.js.map +1 -0
- package/dist/core/shape/index.d.ts +4 -0
- package/dist/core/shape/index.d.ts.map +1 -0
- package/dist/core/shape/index.js +20 -0
- package/dist/core/shape/index.js.map +1 -0
- package/dist/core/shape/manager.d.ts +45 -0
- package/dist/core/shape/manager.d.ts.map +1 -0
- package/dist/core/shape/manager.js +393 -0
- package/dist/core/shape/manager.js.map +1 -0
- package/dist/core/shape/shacl-parser.d.ts +19 -0
- package/dist/core/shape/shacl-parser.d.ts.map +1 -0
- package/dist/core/shape/shacl-parser.js +215 -0
- package/dist/core/shape/shacl-parser.js.map +1 -0
- package/dist/core/shape/shacl.d.ts +11 -0
- package/dist/core/shape/shacl.d.ts.map +1 -0
- package/dist/core/shape/shacl.js +130 -0
- package/dist/core/shape/shacl.js.map +1 -0
- package/dist/core/shape/types.d.ts +149 -0
- package/dist/core/shape/types.d.ts.map +1 -0
- package/dist/core/shape/types.js +45 -0
- package/dist/core/shape/types.js.map +1 -0
- package/dist/core/shape/validator.d.ts +11 -0
- package/dist/core/shape/validator.d.ts.map +1 -0
- package/dist/core/shape/validator.js +232 -0
- package/dist/core/shape/validator.js.map +1 -0
- package/dist/core/solid-n3-client.d.ts +86 -0
- package/dist/core/solid-n3-client.d.ts.map +1 -0
- package/dist/core/solid-n3-client.js +279 -0
- package/dist/core/solid-n3-client.js.map +1 -0
- package/dist/core/sparql/builder/expression-builder.d.ts +42 -0
- package/dist/core/sparql/builder/expression-builder.d.ts.map +1 -0
- package/dist/core/sparql/builder/expression-builder.js +259 -0
- package/dist/core/sparql/builder/expression-builder.js.map +1 -0
- package/dist/core/sparql/builder/select-builder.d.ts +35 -0
- package/dist/core/sparql/builder/select-builder.d.ts.map +1 -0
- package/dist/core/sparql/builder/select-builder.js +446 -0
- package/dist/core/sparql/builder/select-builder.js.map +1 -0
- package/dist/core/sparql/builder/update-builder.d.ts +33 -0
- package/dist/core/sparql/builder/update-builder.d.ts.map +1 -0
- package/dist/core/sparql/builder/update-builder.js +523 -0
- package/dist/core/sparql/builder/update-builder.js.map +1 -0
- package/dist/core/sparql/helpers.d.ts +19 -0
- package/dist/core/sparql/helpers.d.ts.map +1 -0
- package/dist/core/sparql/helpers.js +172 -0
- package/dist/core/sparql/helpers.js.map +1 -0
- package/dist/core/sparql/types.d.ts +10 -0
- package/dist/core/sparql/types.d.ts.map +1 -0
- package/dist/core/sparql/types.js +3 -0
- package/dist/core/sparql/types.js.map +1 -0
- package/dist/core/sparql-executor.d.ts +34 -0
- package/dist/core/sparql-executor.d.ts.map +1 -0
- package/dist/core/sparql-executor.js +712 -0
- package/dist/core/sparql-executor.js.map +1 -0
- package/dist/core/subject/index.d.ts +29 -0
- package/dist/core/subject/index.d.ts.map +1 -0
- package/dist/core/subject/index.js +51 -0
- package/dist/core/subject/index.js.map +1 -0
- package/dist/core/subject/resolver.d.ts +92 -0
- package/dist/core/subject/resolver.d.ts.map +1 -0
- package/dist/core/subject/resolver.js +359 -0
- package/dist/core/subject/resolver.js.map +1 -0
- package/dist/core/subject/types.d.ts +90 -0
- package/dist/core/subject/types.d.ts.map +1 -0
- package/dist/core/subject/types.js +8 -0
- package/dist/core/subject/types.js.map +1 -0
- package/dist/core/triple/builder.d.ts +86 -0
- package/dist/core/triple/builder.d.ts.map +1 -0
- package/dist/core/triple/builder.js +304 -0
- package/dist/core/triple/builder.js.map +1 -0
- package/dist/core/triple/handlers/array.d.ts +23 -0
- package/dist/core/triple/handlers/array.d.ts.map +1 -0
- package/dist/core/triple/handlers/array.js +119 -0
- package/dist/core/triple/handlers/array.js.map +1 -0
- package/dist/core/triple/handlers/default.d.ts +20 -0
- package/dist/core/triple/handlers/default.d.ts.map +1 -0
- package/dist/core/triple/handlers/default.js +96 -0
- package/dist/core/triple/handlers/default.js.map +1 -0
- package/dist/core/triple/handlers/index.d.ts +35 -0
- package/dist/core/triple/handlers/index.d.ts.map +1 -0
- package/dist/core/triple/handlers/index.js +67 -0
- package/dist/core/triple/handlers/index.js.map +1 -0
- package/dist/core/triple/handlers/inline.d.ts +35 -0
- package/dist/core/triple/handlers/inline.d.ts.map +1 -0
- package/dist/core/triple/handlers/inline.js +190 -0
- package/dist/core/triple/handlers/inline.js.map +1 -0
- package/dist/core/triple/handlers/inverse.d.ts +22 -0
- package/dist/core/triple/handlers/inverse.d.ts.map +1 -0
- package/dist/core/triple/handlers/inverse.js +68 -0
- package/dist/core/triple/handlers/inverse.js.map +1 -0
- package/dist/core/triple/handlers/uri.d.ts +28 -0
- package/dist/core/triple/handlers/uri.d.ts.map +1 -0
- package/dist/core/triple/handlers/uri.js +66 -0
- package/dist/core/triple/handlers/uri.js.map +1 -0
- package/dist/core/triple/index.d.ts +9 -0
- package/dist/core/triple/index.d.ts.map +1 -0
- package/dist/core/triple/index.js +21 -0
- package/dist/core/triple/index.js.map +1 -0
- package/dist/core/triple/types.d.ts +152 -0
- package/dist/core/triple/types.d.ts.map +1 -0
- package/dist/core/triple/types.js +8 -0
- package/dist/core/triple/types.js.map +1 -0
- package/dist/core/typeindex-manager.d.ts +124 -0
- package/dist/core/typeindex-manager.d.ts.map +1 -0
- package/dist/core/typeindex-manager.js +662 -0
- package/dist/core/typeindex-manager.js.map +1 -0
- package/dist/core/types.d.ts +57 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +4 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/uri/index.d.ts +8 -0
- package/dist/core/uri/index.d.ts.map +1 -0
- package/dist/core/uri/index.js +12 -0
- package/dist/core/uri/index.js.map +1 -0
- package/dist/core/uri/resolver.d.ts +79 -0
- package/dist/core/uri/resolver.d.ts.map +1 -0
- package/dist/core/uri/resolver.js +458 -0
- package/dist/core/uri/resolver.js.map +1 -0
- package/dist/core/uri/types.d.ts +143 -0
- package/dist/core/uri/types.d.ts.map +1 -0
- package/dist/core/uri/types.js +8 -0
- package/dist/core/uri/types.js.map +1 -0
- package/dist/core/utils/origin-auth.d.ts +28 -0
- package/dist/core/utils/origin-auth.d.ts.map +1 -0
- package/dist/core/utils/origin-auth.js +46 -0
- package/dist/core/utils/origin-auth.js.map +1 -0
- package/dist/core/utils/pod-root.d.ts +15 -0
- package/dist/core/utils/pod-root.d.ts.map +1 -0
- package/dist/core/utils/pod-root.js +72 -0
- package/dist/core/utils/pod-root.js.map +1 -0
- package/dist/core/zod-integration.d.ts +95 -0
- package/dist/core/zod-integration.d.ts.map +1 -0
- package/dist/core/zod-integration.js +236 -0
- package/dist/core/zod-integration.js.map +1 -0
- package/dist/driver.d.ts +23 -0
- package/dist/driver.d.ts.map +1 -0
- package/dist/driver.js +34 -0
- package/dist/driver.js.map +1 -0
- package/dist/esm/core/aggregates.d.ts +19 -0
- package/dist/esm/core/aggregates.d.ts.map +1 -0
- package/dist/esm/core/aggregates.js +43 -0
- package/dist/esm/core/aggregates.js.map +1 -0
- package/dist/esm/core/ast-to-sparql.d.ts +62 -0
- package/dist/esm/core/ast-to-sparql.d.ts.map +1 -0
- package/dist/esm/core/ast-to-sparql.js +103 -0
- package/dist/esm/core/ast-to-sparql.js.map +1 -0
- package/dist/esm/core/compile-time-types.d.ts +37 -0
- package/dist/esm/core/compile-time-types.d.ts.map +1 -0
- package/dist/esm/core/compile-time-types.js +64 -0
- package/dist/esm/core/compile-time-types.js.map +1 -0
- package/dist/esm/core/comunica-patch.d.ts +7 -0
- package/dist/esm/core/comunica-patch.d.ts.map +1 -0
- package/dist/esm/core/comunica-patch.js +76 -0
- package/dist/esm/core/comunica-patch.js.map +1 -0
- package/dist/esm/core/conflict-resolution.d.ts +110 -0
- package/dist/esm/core/conflict-resolution.d.ts.map +1 -0
- package/dist/esm/core/conflict-resolution.js +245 -0
- package/dist/esm/core/conflict-resolution.js.map +1 -0
- package/dist/esm/core/discovery/composite-discovery.d.ts +18 -0
- package/dist/esm/core/discovery/composite-discovery.d.ts.map +1 -0
- package/dist/esm/core/discovery/composite-discovery.js +114 -0
- package/dist/esm/core/discovery/composite-discovery.js.map +1 -0
- package/dist/esm/core/discovery/index.d.ts +7 -0
- package/dist/esm/core/discovery/index.d.ts.map +1 -0
- package/dist/esm/core/discovery/index.js +7 -0
- package/dist/esm/core/discovery/index.js.map +1 -0
- package/dist/esm/core/discovery/interop-discovery.d.ts +36 -0
- package/dist/esm/core/discovery/interop-discovery.d.ts.map +1 -0
- package/dist/esm/core/discovery/interop-discovery.js +642 -0
- package/dist/esm/core/discovery/interop-discovery.js.map +1 -0
- package/dist/esm/core/discovery/interop-tables.d.ts +37 -0
- package/dist/esm/core/discovery/interop-tables.d.ts.map +1 -0
- package/dist/esm/core/discovery/interop-tables.js +65 -0
- package/dist/esm/core/discovery/interop-tables.js.map +1 -0
- package/dist/esm/core/discovery/interop-types.d.ts +36 -0
- package/dist/esm/core/discovery/interop-types.d.ts.map +1 -0
- package/dist/esm/core/discovery/interop-types.js +39 -0
- package/dist/esm/core/discovery/interop-types.js.map +1 -0
- package/dist/esm/core/discovery/provider-cache.d.ts +99 -0
- package/dist/esm/core/discovery/provider-cache.d.ts.map +1 -0
- package/dist/esm/core/discovery/provider-cache.js +292 -0
- package/dist/esm/core/discovery/provider-cache.js.map +1 -0
- package/dist/esm/core/discovery/typeindex-discovery.d.ts +30 -0
- package/dist/esm/core/discovery/typeindex-discovery.d.ts.map +1 -0
- package/dist/esm/core/discovery/typeindex-discovery.js +132 -0
- package/dist/esm/core/discovery/typeindex-discovery.js.map +1 -0
- package/dist/esm/core/discovery/types.d.ts +128 -0
- package/dist/esm/core/discovery/types.d.ts.map +1 -0
- package/dist/esm/core/discovery/types.js +2 -0
- package/dist/esm/core/discovery/types.js.map +1 -0
- package/dist/esm/core/execution/index.d.ts +14 -0
- package/dist/esm/core/execution/index.d.ts.map +1 -0
- package/dist/esm/core/execution/index.js +13 -0
- package/dist/esm/core/execution/index.js.map +1 -0
- package/dist/esm/core/execution/ldp-executor.d.ts +66 -0
- package/dist/esm/core/execution/ldp-executor.d.ts.map +1 -0
- package/dist/esm/core/execution/ldp-executor.js +580 -0
- package/dist/esm/core/execution/ldp-executor.js.map +1 -0
- package/dist/esm/core/execution/ldp-strategy.d.ts +53 -0
- package/dist/esm/core/execution/ldp-strategy.d.ts.map +1 -0
- package/dist/esm/core/execution/ldp-strategy.js +100 -0
- package/dist/esm/core/execution/ldp-strategy.js.map +1 -0
- package/dist/esm/core/execution/pod-executor-types.d.ts +9 -0
- package/dist/esm/core/execution/pod-executor-types.d.ts.map +1 -0
- package/dist/esm/core/execution/pod-executor-types.js +2 -0
- package/dist/esm/core/execution/pod-executor-types.js.map +1 -0
- package/dist/esm/core/execution/pod-executor.d.ts +59 -0
- package/dist/esm/core/execution/pod-executor.d.ts.map +1 -0
- package/dist/esm/core/execution/pod-executor.js +217 -0
- package/dist/esm/core/execution/pod-executor.js.map +1 -0
- package/dist/esm/core/execution/sparql-strategy.d.ts +80 -0
- package/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -0
- package/dist/esm/core/execution/sparql-strategy.js +269 -0
- package/dist/esm/core/execution/sparql-strategy.js.map +1 -0
- package/dist/esm/core/execution/strategy-factory.d.ts +54 -0
- package/dist/esm/core/execution/strategy-factory.d.ts.map +1 -0
- package/dist/esm/core/execution/strategy-factory.js +74 -0
- package/dist/esm/core/execution/strategy-factory.js.map +1 -0
- package/dist/esm/core/execution/types.d.ts +80 -0
- package/dist/esm/core/execution/types.d.ts.map +1 -0
- package/dist/esm/core/execution/types.js +7 -0
- package/dist/esm/core/execution/types.js.map +1 -0
- package/dist/esm/core/expressions.d.ts +35 -0
- package/dist/esm/core/expressions.d.ts.map +1 -0
- package/dist/esm/core/expressions.js +45 -0
- package/dist/esm/core/expressions.js.map +1 -0
- package/dist/esm/core/federated/executor.d.ts +95 -0
- package/dist/esm/core/federated/executor.d.ts.map +1 -0
- package/dist/esm/core/federated/executor.js +421 -0
- package/dist/esm/core/federated/executor.js.map +1 -0
- package/dist/esm/core/federated/index.d.ts +3 -0
- package/dist/esm/core/federated/index.d.ts.map +1 -0
- package/dist/esm/core/federated/index.js +3 -0
- package/dist/esm/core/federated/index.js.map +1 -0
- package/dist/esm/core/federated/types.d.ts +69 -0
- package/dist/esm/core/federated/types.d.ts.map +1 -0
- package/dist/esm/core/federated/types.js +7 -0
- package/dist/esm/core/federated/types.js.map +1 -0
- package/dist/esm/core/notifications/channels/base-channel.d.ts +29 -0
- package/dist/esm/core/notifications/channels/base-channel.d.ts.map +1 -0
- package/dist/esm/core/notifications/channels/base-channel.js +58 -0
- package/dist/esm/core/notifications/channels/base-channel.js.map +1 -0
- package/dist/esm/core/notifications/channels/index.d.ts +4 -0
- package/dist/esm/core/notifications/channels/index.d.ts.map +1 -0
- package/dist/esm/core/notifications/channels/index.js +4 -0
- package/dist/esm/core/notifications/channels/index.js.map +1 -0
- package/dist/esm/core/notifications/channels/sse-channel.d.ts +50 -0
- package/dist/esm/core/notifications/channels/sse-channel.d.ts.map +1 -0
- package/dist/esm/core/notifications/channels/sse-channel.js +206 -0
- package/dist/esm/core/notifications/channels/sse-channel.js.map +1 -0
- package/dist/esm/core/notifications/channels/websocket-channel.d.ts +16 -0
- package/dist/esm/core/notifications/channels/websocket-channel.d.ts.map +1 -0
- package/dist/esm/core/notifications/channels/websocket-channel.js +83 -0
- package/dist/esm/core/notifications/channels/websocket-channel.js.map +1 -0
- package/dist/esm/core/notifications/index.d.ts +3 -0
- package/dist/esm/core/notifications/index.d.ts.map +1 -0
- package/dist/esm/core/notifications/index.js +2 -0
- package/dist/esm/core/notifications/index.js.map +1 -0
- package/dist/esm/core/notifications/notifications-client.d.ts +87 -0
- package/dist/esm/core/notifications/notifications-client.d.ts.map +1 -0
- package/dist/esm/core/notifications/notifications-client.js +456 -0
- package/dist/esm/core/notifications/notifications-client.js.map +1 -0
- package/dist/esm/core/notifications/types.d.ts +228 -0
- package/dist/esm/core/notifications/types.d.ts.map +1 -0
- package/dist/esm/core/notifications/types.js +6 -0
- package/dist/esm/core/notifications/types.js.map +1 -0
- package/dist/esm/core/pod-database.d.ts +383 -0
- package/dist/esm/core/pod-database.d.ts.map +1 -0
- package/dist/esm/core/pod-database.js +1175 -0
- package/dist/esm/core/pod-database.js.map +1 -0
- package/dist/esm/core/pod-dialect.d.ts +294 -0
- package/dist/esm/core/pod-dialect.d.ts.map +1 -0
- package/dist/esm/core/pod-dialect.js +1296 -0
- package/dist/esm/core/pod-dialect.js.map +1 -0
- package/dist/esm/core/pod-discovery.d.ts +20 -0
- package/dist/esm/core/pod-discovery.d.ts.map +1 -0
- package/dist/esm/core/pod-discovery.js +109 -0
- package/dist/esm/core/pod-discovery.js.map +1 -0
- package/dist/esm/core/pod-session.d.ts +44 -0
- package/dist/esm/core/pod-session.d.ts.map +1 -0
- package/dist/esm/core/pod-session.js +109 -0
- package/dist/esm/core/pod-session.js.map +1 -0
- package/dist/esm/core/pod-table.d.ts +710 -0
- package/dist/esm/core/pod-table.d.ts.map +1 -0
- package/dist/esm/core/pod-table.js +1249 -0
- package/dist/esm/core/pod-table.js.map +1 -0
- package/dist/esm/core/profile-manager.d.ts +90 -0
- package/dist/esm/core/profile-manager.d.ts.map +1 -0
- package/dist/esm/core/profile-manager.js +164 -0
- package/dist/esm/core/profile-manager.js.map +1 -0
- package/dist/esm/core/publish-manager.d.ts +90 -0
- package/dist/esm/core/publish-manager.d.ts.map +1 -0
- package/dist/esm/core/publish-manager.js +143 -0
- package/dist/esm/core/publish-manager.js.map +1 -0
- package/dist/esm/core/query-builders/delete-query-builder.d.ts +36 -0
- package/dist/esm/core/query-builders/delete-query-builder.d.ts.map +1 -0
- package/dist/esm/core/query-builders/delete-query-builder.js +140 -0
- package/dist/esm/core/query-builders/delete-query-builder.js.map +1 -0
- package/dist/esm/core/query-builders/helpers.d.ts +4 -0
- package/dist/esm/core/query-builders/helpers.d.ts.map +1 -0
- package/dist/esm/core/query-builders/helpers.js +26 -0
- package/dist/esm/core/query-builders/helpers.js.map +1 -0
- package/dist/esm/core/query-builders/index.d.ts +6 -0
- package/dist/esm/core/query-builders/index.d.ts.map +1 -0
- package/dist/esm/core/query-builders/index.js +5 -0
- package/dist/esm/core/query-builders/index.js.map +1 -0
- package/dist/esm/core/query-builders/insert-query-builder.d.ts +27 -0
- package/dist/esm/core/query-builders/insert-query-builder.d.ts.map +1 -0
- package/dist/esm/core/query-builders/insert-query-builder.js +124 -0
- package/dist/esm/core/query-builders/insert-query-builder.js.map +1 -0
- package/dist/esm/core/query-builders/select-query-builder.d.ts +106 -0
- package/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -0
- package/dist/esm/core/query-builders/select-query-builder.js +1260 -0
- package/dist/esm/core/query-builders/select-query-builder.js.map +1 -0
- package/dist/esm/core/query-builders/types.d.ts +37 -0
- package/dist/esm/core/query-builders/types.d.ts.map +1 -0
- package/dist/esm/core/query-builders/types.js +2 -0
- package/dist/esm/core/query-builders/types.js.map +1 -0
- package/dist/esm/core/query-builders/update-query-builder.d.ts +38 -0
- package/dist/esm/core/query-builders/update-query-builder.d.ts.map +1 -0
- package/dist/esm/core/query-builders/update-query-builder.js +164 -0
- package/dist/esm/core/query-builders/update-query-builder.js.map +1 -0
- package/dist/esm/core/query-conditions.d.ts +52 -0
- package/dist/esm/core/query-conditions.d.ts.map +1 -0
- package/dist/esm/core/query-conditions.js +111 -0
- package/dist/esm/core/query-conditions.js.map +1 -0
- package/dist/esm/core/rdf-constants.d.ts +16 -0
- package/dist/esm/core/rdf-constants.d.ts.map +1 -0
- package/dist/esm/core/rdf-constants.js +32 -0
- package/dist/esm/core/rdf-constants.js.map +1 -0
- package/dist/esm/core/rdf-schema-parser.d.ts +34 -0
- package/dist/esm/core/rdf-schema-parser.d.ts.map +1 -0
- package/dist/esm/core/rdf-schema-parser.js +136 -0
- package/dist/esm/core/rdf-schema-parser.js.map +1 -0
- package/dist/esm/core/resource-resolver/base-resolver.d.ts +29 -0
- package/dist/esm/core/resource-resolver/base-resolver.d.ts.map +1 -0
- package/dist/esm/core/resource-resolver/base-resolver.js +78 -0
- package/dist/esm/core/resource-resolver/base-resolver.js.map +1 -0
- package/dist/esm/core/resource-resolver/document-resolver.d.ts +20 -0
- package/dist/esm/core/resource-resolver/document-resolver.d.ts.map +1 -0
- package/dist/esm/core/resource-resolver/document-resolver.js +101 -0
- package/dist/esm/core/resource-resolver/document-resolver.js.map +1 -0
- package/dist/esm/core/resource-resolver/factory.d.ts +27 -0
- package/dist/esm/core/resource-resolver/factory.d.ts.map +1 -0
- package/dist/esm/core/resource-resolver/factory.js +53 -0
- package/dist/esm/core/resource-resolver/factory.js.map +1 -0
- package/dist/esm/core/resource-resolver/fragment-resolver.d.ts +20 -0
- package/dist/esm/core/resource-resolver/fragment-resolver.d.ts.map +1 -0
- package/dist/esm/core/resource-resolver/fragment-resolver.js +56 -0
- package/dist/esm/core/resource-resolver/fragment-resolver.js.map +1 -0
- package/dist/esm/core/resource-resolver/index.d.ts +11 -0
- package/dist/esm/core/resource-resolver/index.d.ts.map +1 -0
- package/dist/esm/core/resource-resolver/index.js +10 -0
- package/dist/esm/core/resource-resolver/index.js.map +1 -0
- package/dist/esm/core/resource-resolver/types.d.ts +57 -0
- package/dist/esm/core/resource-resolver/types.d.ts.map +1 -0
- package/dist/esm/core/resource-resolver/types.js +8 -0
- package/dist/esm/core/resource-resolver/types.js.map +1 -0
- package/dist/esm/core/runtime/pod-runtime.d.ts +34 -0
- package/dist/esm/core/runtime/pod-runtime.d.ts.map +1 -0
- package/dist/esm/core/runtime/pod-runtime.js +121 -0
- package/dist/esm/core/runtime/pod-runtime.js.map +1 -0
- package/dist/esm/core/schema/columns.d.ts +74 -0
- package/dist/esm/core/schema/columns.d.ts.map +1 -0
- package/dist/esm/core/schema/columns.js +282 -0
- package/dist/esm/core/schema/columns.js.map +1 -0
- package/dist/esm/core/schema/defs.d.ts +92 -0
- package/dist/esm/core/schema/defs.d.ts.map +1 -0
- package/dist/esm/core/schema/defs.js +36 -0
- package/dist/esm/core/schema/defs.js.map +1 -0
- package/dist/esm/core/schema/factories.d.ts +29 -0
- package/dist/esm/core/schema/factories.d.ts.map +1 -0
- package/dist/esm/core/schema/factories.js +89 -0
- package/dist/esm/core/schema/factories.js.map +1 -0
- package/dist/esm/core/schema/index.d.ts +9 -0
- package/dist/esm/core/schema/index.d.ts.map +1 -0
- package/dist/esm/core/schema/index.js +9 -0
- package/dist/esm/core/schema/index.js.map +1 -0
- package/dist/esm/core/schema/pod-table.d.ts +93 -0
- package/dist/esm/core/schema/pod-table.d.ts.map +1 -0
- package/dist/esm/core/schema/pod-table.js +289 -0
- package/dist/esm/core/schema/pod-table.js.map +1 -0
- package/dist/esm/core/schema/relations.d.ts +26 -0
- package/dist/esm/core/schema/relations.d.ts.map +1 -0
- package/dist/esm/core/schema/relations.js +33 -0
- package/dist/esm/core/schema/relations.js.map +1 -0
- package/dist/esm/core/schema/solid-schema.d.ts +19 -0
- package/dist/esm/core/schema/solid-schema.d.ts.map +1 -0
- package/dist/esm/core/schema/solid-schema.js +87 -0
- package/dist/esm/core/schema/solid-schema.js.map +1 -0
- package/dist/esm/core/schema/types.d.ts +45 -0
- package/dist/esm/core/schema/types.d.ts.map +1 -0
- package/dist/esm/core/schema/types.js +2 -0
- package/dist/esm/core/schema/types.js.map +1 -0
- package/dist/esm/core/schema/utils.d.ts +15 -0
- package/dist/esm/core/schema/utils.d.ts.map +1 -0
- package/dist/esm/core/schema/utils.js +40 -0
- package/dist/esm/core/schema/utils.js.map +1 -0
- package/dist/esm/core/select-plan.d.ts +45 -0
- package/dist/esm/core/select-plan.d.ts.map +1 -0
- package/dist/esm/core/select-plan.js +2 -0
- package/dist/esm/core/select-plan.js.map +1 -0
- package/dist/esm/core/services/pod-services.d.ts +41 -0
- package/dist/esm/core/services/pod-services.d.ts.map +1 -0
- package/dist/esm/core/services/pod-services.js +75 -0
- package/dist/esm/core/services/pod-services.js.map +1 -0
- package/dist/esm/core/shape/generator.d.ts +12 -0
- package/dist/esm/core/shape/generator.d.ts.map +1 -0
- package/dist/esm/core/shape/generator.js +106 -0
- package/dist/esm/core/shape/generator.js.map +1 -0
- package/dist/esm/core/shape/index.d.ts +4 -0
- package/dist/esm/core/shape/index.d.ts.map +1 -0
- package/dist/esm/core/shape/index.js +4 -0
- package/dist/esm/core/shape/index.js.map +1 -0
- package/dist/esm/core/shape/manager.d.ts +45 -0
- package/dist/esm/core/shape/manager.d.ts.map +1 -0
- package/dist/esm/core/shape/manager.js +389 -0
- package/dist/esm/core/shape/manager.js.map +1 -0
- package/dist/esm/core/shape/shacl-parser.d.ts +19 -0
- package/dist/esm/core/shape/shacl-parser.d.ts.map +1 -0
- package/dist/esm/core/shape/shacl-parser.js +210 -0
- package/dist/esm/core/shape/shacl-parser.js.map +1 -0
- package/dist/esm/core/shape/shacl.d.ts +11 -0
- package/dist/esm/core/shape/shacl.d.ts.map +1 -0
- package/dist/esm/core/shape/shacl.js +127 -0
- package/dist/esm/core/shape/shacl.js.map +1 -0
- package/dist/esm/core/shape/types.d.ts +149 -0
- package/dist/esm/core/shape/types.d.ts.map +1 -0
- package/dist/esm/core/shape/types.js +42 -0
- package/dist/esm/core/shape/types.js.map +1 -0
- package/dist/esm/core/shape/validator.d.ts +11 -0
- package/dist/esm/core/shape/validator.d.ts.map +1 -0
- package/dist/esm/core/shape/validator.js +229 -0
- package/dist/esm/core/shape/validator.js.map +1 -0
- package/dist/esm/core/solid-n3-client.d.ts +86 -0
- package/dist/esm/core/solid-n3-client.d.ts.map +1 -0
- package/dist/esm/core/solid-n3-client.js +275 -0
- package/dist/esm/core/solid-n3-client.js.map +1 -0
- package/dist/esm/core/sparql/builder/expression-builder.d.ts +42 -0
- package/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -0
- package/dist/esm/core/sparql/builder/expression-builder.js +255 -0
- package/dist/esm/core/sparql/builder/expression-builder.js.map +1 -0
- package/dist/esm/core/sparql/builder/select-builder.d.ts +35 -0
- package/dist/esm/core/sparql/builder/select-builder.d.ts.map +1 -0
- package/dist/esm/core/sparql/builder/select-builder.js +409 -0
- package/dist/esm/core/sparql/builder/select-builder.js.map +1 -0
- package/dist/esm/core/sparql/builder/update-builder.d.ts +33 -0
- package/dist/esm/core/sparql/builder/update-builder.d.ts.map +1 -0
- package/dist/esm/core/sparql/builder/update-builder.js +486 -0
- package/dist/esm/core/sparql/builder/update-builder.js.map +1 -0
- package/dist/esm/core/sparql/helpers.d.ts +19 -0
- package/dist/esm/core/sparql/helpers.d.ts.map +1 -0
- package/dist/esm/core/sparql/helpers.js +165 -0
- package/dist/esm/core/sparql/helpers.js.map +1 -0
- package/dist/esm/core/sparql/types.d.ts +10 -0
- package/dist/esm/core/sparql/types.d.ts.map +1 -0
- package/dist/esm/core/sparql/types.js +2 -0
- package/dist/esm/core/sparql/types.js.map +1 -0
- package/dist/esm/core/sparql-executor.d.ts +34 -0
- package/dist/esm/core/sparql-executor.d.ts.map +1 -0
- package/dist/esm/core/sparql-executor.js +708 -0
- package/dist/esm/core/sparql-executor.js.map +1 -0
- package/dist/esm/core/subject/index.d.ts +29 -0
- package/dist/esm/core/subject/index.d.ts.map +1 -0
- package/dist/esm/core/subject/index.js +49 -0
- package/dist/esm/core/subject/index.js.map +1 -0
- package/dist/esm/core/subject/resolver.d.ts +92 -0
- package/dist/esm/core/subject/resolver.d.ts.map +1 -0
- package/dist/esm/core/subject/resolver.js +355 -0
- package/dist/esm/core/subject/resolver.js.map +1 -0
- package/dist/esm/core/subject/types.d.ts +90 -0
- package/dist/esm/core/subject/types.d.ts.map +1 -0
- package/dist/esm/core/subject/types.js +7 -0
- package/dist/esm/core/subject/types.js.map +1 -0
- package/dist/esm/core/triple/builder.d.ts +86 -0
- package/dist/esm/core/triple/builder.d.ts.map +1 -0
- package/dist/esm/core/triple/builder.js +300 -0
- package/dist/esm/core/triple/builder.js.map +1 -0
- package/dist/esm/core/triple/handlers/array.d.ts +23 -0
- package/dist/esm/core/triple/handlers/array.d.ts.map +1 -0
- package/dist/esm/core/triple/handlers/array.js +115 -0
- package/dist/esm/core/triple/handlers/array.js.map +1 -0
- package/dist/esm/core/triple/handlers/default.d.ts +20 -0
- package/dist/esm/core/triple/handlers/default.d.ts.map +1 -0
- package/dist/esm/core/triple/handlers/default.js +92 -0
- package/dist/esm/core/triple/handlers/default.js.map +1 -0
- package/dist/esm/core/triple/handlers/index.d.ts +35 -0
- package/dist/esm/core/triple/handlers/index.d.ts.map +1 -0
- package/dist/esm/core/triple/handlers/index.js +59 -0
- package/dist/esm/core/triple/handlers/index.js.map +1 -0
- package/dist/esm/core/triple/handlers/inline.d.ts +35 -0
- package/dist/esm/core/triple/handlers/inline.d.ts.map +1 -0
- package/dist/esm/core/triple/handlers/inline.js +186 -0
- package/dist/esm/core/triple/handlers/inline.js.map +1 -0
- package/dist/esm/core/triple/handlers/inverse.d.ts +22 -0
- package/dist/esm/core/triple/handlers/inverse.d.ts.map +1 -0
- package/dist/esm/core/triple/handlers/inverse.js +64 -0
- package/dist/esm/core/triple/handlers/inverse.js.map +1 -0
- package/dist/esm/core/triple/handlers/uri.d.ts +28 -0
- package/dist/esm/core/triple/handlers/uri.d.ts.map +1 -0
- package/dist/esm/core/triple/handlers/uri.js +62 -0
- package/dist/esm/core/triple/handlers/uri.js.map +1 -0
- package/dist/esm/core/triple/index.d.ts +9 -0
- package/dist/esm/core/triple/index.d.ts.map +1 -0
- package/dist/esm/core/triple/index.js +10 -0
- package/dist/esm/core/triple/index.js.map +1 -0
- package/dist/esm/core/triple/types.d.ts +152 -0
- package/dist/esm/core/triple/types.d.ts.map +1 -0
- package/dist/esm/core/triple/types.js +7 -0
- package/dist/esm/core/triple/types.js.map +1 -0
- package/dist/esm/core/typeindex-manager.d.ts +124 -0
- package/dist/esm/core/typeindex-manager.d.ts.map +1 -0
- package/dist/esm/core/typeindex-manager.js +658 -0
- package/dist/esm/core/typeindex-manager.js.map +1 -0
- package/dist/esm/core/types.d.ts +57 -0
- package/dist/esm/core/types.d.ts.map +1 -0
- package/dist/esm/core/types.js +3 -0
- package/dist/esm/core/types.js.map +1 -0
- package/dist/esm/core/uri/index.d.ts +8 -0
- package/dist/esm/core/uri/index.d.ts.map +1 -0
- package/dist/esm/core/uri/index.js +8 -0
- package/dist/esm/core/uri/index.js.map +1 -0
- package/dist/esm/core/uri/resolver.d.ts +79 -0
- package/dist/esm/core/uri/resolver.d.ts.map +1 -0
- package/dist/esm/core/uri/resolver.js +454 -0
- package/dist/esm/core/uri/resolver.js.map +1 -0
- package/dist/esm/core/uri/types.d.ts +143 -0
- package/dist/esm/core/uri/types.d.ts.map +1 -0
- package/dist/esm/core/uri/types.js +7 -0
- package/dist/esm/core/uri/types.js.map +1 -0
- package/dist/esm/core/utils/origin-auth.d.ts +28 -0
- package/dist/esm/core/utils/origin-auth.d.ts.map +1 -0
- package/dist/esm/core/utils/origin-auth.js +42 -0
- package/dist/esm/core/utils/origin-auth.js.map +1 -0
- package/dist/esm/core/utils/pod-root.d.ts +15 -0
- package/dist/esm/core/utils/pod-root.d.ts.map +1 -0
- package/dist/esm/core/utils/pod-root.js +69 -0
- package/dist/esm/core/utils/pod-root.js.map +1 -0
- package/dist/esm/core/zod-integration.d.ts +95 -0
- package/dist/esm/core/zod-integration.d.ts.map +1 -0
- package/dist/esm/core/zod-integration.js +227 -0
- package/dist/esm/core/zod-integration.js.map +1 -0
- package/dist/esm/driver.d.ts +23 -0
- package/dist/esm/driver.d.ts.map +1 -0
- package/dist/esm/driver.js +30 -0
- package/dist/esm/driver.js.map +1 -0
- package/dist/esm/index.d.ts +23 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +44 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/solid.d.ts +21 -0
- package/dist/esm/solid.d.ts.map +1 -0
- package/dist/esm/solid.js +30 -0
- package/dist/esm/solid.js.map +1 -0
- package/dist/esm/test-utils/real-test-helpers.d.ts +5 -0
- package/dist/esm/test-utils/real-test-helpers.d.ts.map +1 -0
- package/dist/esm/test-utils/real-test-helpers.js +17 -0
- package/dist/esm/test-utils/real-test-helpers.js.map +1 -0
- package/dist/esm/types/sparql-types.d.ts +27 -0
- package/dist/esm/types/sparql-types.d.ts.map +1 -0
- package/dist/esm/types/sparql-types.js +3 -0
- package/dist/esm/types/sparql-types.js.map +1 -0
- package/dist/esm/utils/find-by-iri.d.ts +9 -0
- package/dist/esm/utils/find-by-iri.d.ts.map +1 -0
- package/dist/esm/utils/find-by-iri.js +22 -0
- package/dist/esm/utils/find-by-iri.js.map +1 -0
- package/dist/esm/utils/helpers.d.ts +17 -0
- package/dist/esm/utils/helpers.d.ts.map +1 -0
- package/dist/esm/utils/helpers.js +59 -0
- package/dist/esm/utils/helpers.js.map +1 -0
- package/dist/esm/utils/namespace.d.ts +4 -0
- package/dist/esm/utils/namespace.d.ts.map +1 -0
- package/dist/esm/utils/namespace.js +30 -0
- package/dist/esm/utils/namespace.js.map +1 -0
- package/dist/esm/utils/rdf-helpers.d.ts +17 -0
- package/dist/esm/utils/rdf-helpers.d.ts.map +1 -0
- package/dist/esm/utils/rdf-helpers.js +47 -0
- package/dist/esm/utils/rdf-helpers.js.map +1 -0
- package/dist/esm/utils/rdf-validation.d.ts +25 -0
- package/dist/esm/utils/rdf-validation.d.ts.map +1 -0
- package/dist/esm/utils/rdf-validation.js +288 -0
- package/dist/esm/utils/rdf-validation.js.map +1 -0
- package/dist/esm/utils/thing-operations.d.ts +28 -0
- package/dist/esm/utils/thing-operations.d.ts.map +1 -0
- package/dist/esm/utils/thing-operations.js +249 -0
- package/dist/esm/utils/thing-operations.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +156 -0
- package/dist/index.js.map +1 -0
- package/dist/solid.d.ts +21 -0
- package/dist/solid.d.ts.map +1 -0
- package/dist/solid.js +35 -0
- package/dist/solid.js.map +1 -0
- package/dist/test-utils/real-test-helpers.d.ts +5 -0
- package/dist/test-utils/real-test-helpers.d.ts.map +1 -0
- package/dist/test-utils/real-test-helpers.js +22 -0
- package/dist/test-utils/real-test-helpers.js.map +1 -0
- package/dist/types/sparql-types.d.ts +27 -0
- package/dist/types/sparql-types.d.ts.map +1 -0
- package/dist/types/sparql-types.js +4 -0
- package/dist/types/sparql-types.js.map +1 -0
- package/dist/utils/find-by-iri.d.ts +9 -0
- package/dist/utils/find-by-iri.d.ts.map +1 -0
- package/dist/utils/find-by-iri.js +25 -0
- package/dist/utils/find-by-iri.js.map +1 -0
- package/dist/utils/helpers.d.ts +17 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +65 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/namespace.d.ts +4 -0
- package/dist/utils/namespace.d.ts.map +1 -0
- package/dist/utils/namespace.js +33 -0
- package/dist/utils/namespace.js.map +1 -0
- package/dist/utils/rdf-helpers.d.ts +17 -0
- package/dist/utils/rdf-helpers.d.ts.map +1 -0
- package/dist/utils/rdf-helpers.js +53 -0
- package/dist/utils/rdf-helpers.js.map +1 -0
- package/dist/utils/rdf-validation.d.ts +25 -0
- package/dist/utils/rdf-validation.d.ts.map +1 -0
- package/dist/utils/rdf-validation.js +292 -0
- package/dist/utils/rdf-validation.js.map +1 -0
- package/dist/utils/thing-operations.d.ts +28 -0
- package/dist/utils/thing-operations.d.ts.map +1 -0
- package/dist/utils/thing-operations.js +256 -0
- package/dist/utils/thing-operations.js.map +1 -0
- package/package.json +98 -0
|
@@ -0,0 +1,1249 @@
|
|
|
1
|
+
var _a, _b;
|
|
2
|
+
import { entityKind } from 'drizzle-orm';
|
|
3
|
+
// NanoID-like ID Generator (URL-friendly, cryptographically strong)
|
|
4
|
+
const urlAlphabet = 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';
|
|
5
|
+
const generateNanoId = (size = 21) => {
|
|
6
|
+
let id = '';
|
|
7
|
+
// Use crypto for randomness (browser & modern Node)
|
|
8
|
+
let bytes;
|
|
9
|
+
if (typeof globalThis.crypto !== 'undefined' && typeof globalThis.crypto.getRandomValues === 'function') {
|
|
10
|
+
bytes = globalThis.crypto.getRandomValues(new Uint8Array(size));
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
// Fallback for older Node.js or environments without Web Crypto API (less secure)
|
|
14
|
+
// For Node.js, require('crypto') might be an option but we avoid dynamic require for bundling.
|
|
15
|
+
// This fallback is less secure but prevents crashes.
|
|
16
|
+
console.warn("Using Math.random fallback for NanoID generation. Consider polyfilling crypto or upgrading Node.js for production.");
|
|
17
|
+
bytes = new Uint8Array(size);
|
|
18
|
+
for (let i = 0; i < size; i++) {
|
|
19
|
+
bytes[i] = Math.floor(Math.random() * 256); // Fill with pseudo-random bytes
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
for (let i = 0; i < size; i++) {
|
|
23
|
+
id += urlAlphabet[bytes[i] % urlAlphabet.length];
|
|
24
|
+
}
|
|
25
|
+
return id;
|
|
26
|
+
};
|
|
27
|
+
const hasStringValue = (input) => typeof input === 'object' && input !== null && typeof input.value === 'string';
|
|
28
|
+
const hasTermValue = (input) => typeof input === 'object' && input !== null &&
|
|
29
|
+
typeof input.term === 'object' &&
|
|
30
|
+
input.term !== null &&
|
|
31
|
+
typeof input.term?.value === 'string';
|
|
32
|
+
const resolveTermIri = (input) => {
|
|
33
|
+
if (typeof input === 'string') {
|
|
34
|
+
return input;
|
|
35
|
+
}
|
|
36
|
+
if (hasStringValue(input)) {
|
|
37
|
+
return input.value;
|
|
38
|
+
}
|
|
39
|
+
if (hasTermValue(input)) {
|
|
40
|
+
return input.term.value;
|
|
41
|
+
}
|
|
42
|
+
throw new Error('Term must be a string or VocabTerm with a string value');
|
|
43
|
+
};
|
|
44
|
+
export class ColumnBuilder {
|
|
45
|
+
constructor(name, dataType, options = {}, predicate, elementType) {
|
|
46
|
+
this.name = name;
|
|
47
|
+
this.dataType = dataType;
|
|
48
|
+
this.options = { ...options }; // 复制options避免引用问题
|
|
49
|
+
this._predicateUri = predicate;
|
|
50
|
+
this.elementType = elementType ?? null;
|
|
51
|
+
}
|
|
52
|
+
// 统一的值格式化方法 - Column 层负责类型转换
|
|
53
|
+
formatValue(value) {
|
|
54
|
+
if (value === null || value === undefined) {
|
|
55
|
+
throw new Error('Cannot format null or undefined value');
|
|
56
|
+
}
|
|
57
|
+
// 处理数组类型 - 使用多重属性
|
|
58
|
+
if (this.options.isArray) {
|
|
59
|
+
if (!Array.isArray(value)) {
|
|
60
|
+
throw new Error('Array column requires array value');
|
|
61
|
+
}
|
|
62
|
+
// 返回字符串数组,每个元素会作为单独的三元组
|
|
63
|
+
return value.map(item => this.formatSingleValue(item));
|
|
64
|
+
}
|
|
65
|
+
return this.formatSingleValue(value);
|
|
66
|
+
}
|
|
67
|
+
// 格式化单个值
|
|
68
|
+
formatSingleValue(value) {
|
|
69
|
+
const effectiveType = this.options.isArray && this.elementType ? this.elementType : this.dataType;
|
|
70
|
+
// 处理引用类型
|
|
71
|
+
if (this.options.referenceTarget && typeof value === 'string') {
|
|
72
|
+
return `<${value}>`;
|
|
73
|
+
}
|
|
74
|
+
// 根据数据类型格式化
|
|
75
|
+
switch (effectiveType) {
|
|
76
|
+
case 'string':
|
|
77
|
+
return `"${String(value).replace(/"/g, '\\"')}"`;
|
|
78
|
+
case 'integer':
|
|
79
|
+
return String(Number(value));
|
|
80
|
+
case 'boolean':
|
|
81
|
+
return `"${value}"^^<http://www.w3.org/2001/XMLSchema#boolean>`;
|
|
82
|
+
case 'datetime': {
|
|
83
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
84
|
+
return `"${date.toISOString()}"^^<http://www.w3.org/2001/XMLSchema#dateTime>`;
|
|
85
|
+
}
|
|
86
|
+
case 'json':
|
|
87
|
+
case 'object': {
|
|
88
|
+
const jsonString = JSON.stringify(value);
|
|
89
|
+
return `"${jsonString.replace(/"/g, '\\"')}"^^<http://www.w3.org/2001/XMLSchema#json>`;
|
|
90
|
+
}
|
|
91
|
+
case 'uri':
|
|
92
|
+
// URI 类型直接作为 NamedNode,不需要引号
|
|
93
|
+
if (typeof value !== 'string' || (!value.startsWith('http://') && !value.startsWith('https://'))) {
|
|
94
|
+
throw new Error(`URI column requires valid HTTP(S) URL, got: ${value}`);
|
|
95
|
+
}
|
|
96
|
+
return `<${value}>`;
|
|
97
|
+
default:
|
|
98
|
+
return `"${String(value).replace(/"/g, '\\"')}"`;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// 统一的值解析方法 - Column 层负责类型解析
|
|
102
|
+
parseValue(rdfValue, datatypeIri) {
|
|
103
|
+
// 处理数组类型在 SPARQL 执行层会返回多个值的数组
|
|
104
|
+
if (this.options.isArray) {
|
|
105
|
+
// 这个方法主要用于解析单个 RDF 值,数组会在查询层处理
|
|
106
|
+
return this.parseSingleValue(rdfValue, datatypeIri);
|
|
107
|
+
}
|
|
108
|
+
return this.parseSingleValue(rdfValue, datatypeIri);
|
|
109
|
+
}
|
|
110
|
+
// 解析单个值
|
|
111
|
+
parseSingleValue(rdfValue, datatypeIri) {
|
|
112
|
+
if (!datatypeIri) {
|
|
113
|
+
return rdfValue;
|
|
114
|
+
}
|
|
115
|
+
// 根据数据类型和 RDF 类型解析
|
|
116
|
+
if (datatypeIri.includes('#integer') || datatypeIri.includes('#int')) {
|
|
117
|
+
return parseInt(rdfValue, 10);
|
|
118
|
+
}
|
|
119
|
+
else if (datatypeIri.includes('#decimal') || datatypeIri.includes('#double')) {
|
|
120
|
+
return parseFloat(rdfValue);
|
|
121
|
+
}
|
|
122
|
+
else if (datatypeIri.includes('#boolean')) {
|
|
123
|
+
return rdfValue === 'true';
|
|
124
|
+
}
|
|
125
|
+
else if (datatypeIri.includes('#dateTime')) {
|
|
126
|
+
return new Date(rdfValue);
|
|
127
|
+
}
|
|
128
|
+
else if (datatypeIri.includes('#json')) {
|
|
129
|
+
try {
|
|
130
|
+
return JSON.parse(rdfValue);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
console.warn('Failed to parse JSON value:', rdfValue);
|
|
134
|
+
return rdfValue;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// URI 类型检测 - 如果看起来像 URI 就直接返回
|
|
138
|
+
if (rdfValue.startsWith('http://') || rdfValue.startsWith('https://')) {
|
|
139
|
+
return rdfValue;
|
|
140
|
+
}
|
|
141
|
+
return rdfValue;
|
|
142
|
+
}
|
|
143
|
+
primaryKey() {
|
|
144
|
+
const predicate = this.name === 'id'
|
|
145
|
+
? '@id'
|
|
146
|
+
: this.options.predicate;
|
|
147
|
+
this.options = {
|
|
148
|
+
...this.options,
|
|
149
|
+
primaryKey: true,
|
|
150
|
+
required: true,
|
|
151
|
+
predicate
|
|
152
|
+
};
|
|
153
|
+
if (predicate) {
|
|
154
|
+
this._predicateUri = predicate;
|
|
155
|
+
}
|
|
156
|
+
return this;
|
|
157
|
+
}
|
|
158
|
+
notNull() {
|
|
159
|
+
this.options = { ...this.options, required: true, notNull: true };
|
|
160
|
+
return this;
|
|
161
|
+
}
|
|
162
|
+
predicate(uri) {
|
|
163
|
+
const resolved = resolveTermIri(uri);
|
|
164
|
+
this._predicateUri = resolved;
|
|
165
|
+
this.options = { ...this.options, predicate: resolved };
|
|
166
|
+
return this;
|
|
167
|
+
}
|
|
168
|
+
default(value) {
|
|
169
|
+
this.options = { ...this.options, defaultValue: value };
|
|
170
|
+
return this;
|
|
171
|
+
}
|
|
172
|
+
defaultNow() {
|
|
173
|
+
this.options = { ...this.options, defaultValue: () => new Date() };
|
|
174
|
+
return this;
|
|
175
|
+
}
|
|
176
|
+
inverse(value = true) {
|
|
177
|
+
this.options = { ...this.options, inverse: value };
|
|
178
|
+
return this;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* 设置引用目标
|
|
182
|
+
*
|
|
183
|
+
* 支持三种输入格式:
|
|
184
|
+
* 1. class URI 字符串 (https://...) - 从 tableRegistry 按 class 查找
|
|
185
|
+
* 2. 表名字符串 (非 URL 格式) - 从 tableNameRegistry 按表名查找
|
|
186
|
+
* 3. PodTable 对象 - 直接使用,优先级最高
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* // 使用 class URI(自动推导表)
|
|
190
|
+
* author: uri('author').reference('https://schema.org/Person')
|
|
191
|
+
*
|
|
192
|
+
* // 使用表名(解决同 class 多表歧义)
|
|
193
|
+
* author: uri('author').reference('users_public')
|
|
194
|
+
*
|
|
195
|
+
* // 使用表对象(类型安全,但注意循环依赖)
|
|
196
|
+
* author: uri('author').reference(usersTable)
|
|
197
|
+
*/
|
|
198
|
+
reference(target) {
|
|
199
|
+
if (typeof target === 'string') {
|
|
200
|
+
// 字符串:根据格式判断是 class URI 还是表名
|
|
201
|
+
if (target.startsWith('http://') || target.startsWith('https://')) {
|
|
202
|
+
// class URI
|
|
203
|
+
this.options = { ...this.options, referenceTarget: target };
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
// 表名
|
|
207
|
+
this.options = { ...this.options, referenceTableName: target };
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
// PodTable 对象
|
|
212
|
+
this.options = { ...this.options, referenceTable: target };
|
|
213
|
+
}
|
|
214
|
+
return this;
|
|
215
|
+
}
|
|
216
|
+
// Array support - similar to Drizzle ORM PostgreSQL
|
|
217
|
+
array() {
|
|
218
|
+
const arrayBuilder = new ColumnBuilder(this.name, 'array', {
|
|
219
|
+
...this.options,
|
|
220
|
+
baseType: this.dataType,
|
|
221
|
+
isArray: true
|
|
222
|
+
}, this._predicateUri, this.dataType);
|
|
223
|
+
return arrayBuilder;
|
|
224
|
+
}
|
|
225
|
+
// method to get predicate URI
|
|
226
|
+
getPredicateUri() {
|
|
227
|
+
return this._predicateUri;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// 列类型基类
|
|
231
|
+
export class PodColumnBase {
|
|
232
|
+
constructor(name, dataType, options = {}, tableName) {
|
|
233
|
+
this.name = name;
|
|
234
|
+
this.dataType = dataType;
|
|
235
|
+
this.options = options;
|
|
236
|
+
this.tableName = tableName;
|
|
237
|
+
}
|
|
238
|
+
// 获取 RDF 谓词
|
|
239
|
+
getPredicate(tableNamespace) {
|
|
240
|
+
if (this.options.predicate) {
|
|
241
|
+
return this.options.predicate;
|
|
242
|
+
}
|
|
243
|
+
if (tableNamespace) {
|
|
244
|
+
return `${tableNamespace.uri}${this.name}`;
|
|
245
|
+
}
|
|
246
|
+
throw new Error(`Missing predicate for column "${this.name}"; please set namespace or predicate explicitly.`);
|
|
247
|
+
}
|
|
248
|
+
// 检查是否是引用类型
|
|
249
|
+
isReference() {
|
|
250
|
+
return !!(this.options.referenceTarget || this.options.referenceTableName || this.options.referenceTable);
|
|
251
|
+
}
|
|
252
|
+
// 获取引用目标 class URI
|
|
253
|
+
getReferenceTarget() {
|
|
254
|
+
return this.options.referenceTarget;
|
|
255
|
+
}
|
|
256
|
+
// 获取引用的目标表名
|
|
257
|
+
getReferenceTableName() {
|
|
258
|
+
return this.options.referenceTableName;
|
|
259
|
+
}
|
|
260
|
+
// 获取引用的目标表对象
|
|
261
|
+
getReferenceTable() {
|
|
262
|
+
return this.options.referenceTable;
|
|
263
|
+
}
|
|
264
|
+
// 链式方法 - 简化版本,直接返回 this
|
|
265
|
+
primaryKey() {
|
|
266
|
+
this.options.primaryKey = true;
|
|
267
|
+
this.options.required = true; // 主键自动为 required
|
|
268
|
+
if (!this.options.predicate && this.name === 'id') {
|
|
269
|
+
this.options.predicate = '@id';
|
|
270
|
+
}
|
|
271
|
+
return this;
|
|
272
|
+
}
|
|
273
|
+
notNull() {
|
|
274
|
+
this.options.required = true;
|
|
275
|
+
return this;
|
|
276
|
+
}
|
|
277
|
+
default(value) {
|
|
278
|
+
this.options.defaultValue = value;
|
|
279
|
+
return this;
|
|
280
|
+
}
|
|
281
|
+
predicate(uri) {
|
|
282
|
+
this.options.predicate = resolveTermIri(uri);
|
|
283
|
+
return this;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* 设置引用目标
|
|
287
|
+
*
|
|
288
|
+
* 支持三种输入格式:
|
|
289
|
+
* 1. class URI 字符串 (https://...) - 从 tableRegistry 按 class 查找
|
|
290
|
+
* 2. 表名字符串 (非 URL 格式) - 从 tableNameRegistry 按表名查找
|
|
291
|
+
* 3. PodTable 对象 - 直接使用,优先级最高
|
|
292
|
+
*/
|
|
293
|
+
reference(target) {
|
|
294
|
+
if (typeof target === 'string') {
|
|
295
|
+
if (target.startsWith('http://') || target.startsWith('https://')) {
|
|
296
|
+
this.options.referenceTarget = target;
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
this.options.referenceTableName = target;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
this.options.referenceTable = target;
|
|
304
|
+
}
|
|
305
|
+
return this;
|
|
306
|
+
}
|
|
307
|
+
inverse(value = true) {
|
|
308
|
+
this.options.inverse = value;
|
|
309
|
+
return this;
|
|
310
|
+
}
|
|
311
|
+
isInverse() {
|
|
312
|
+
return this.options.inverse === true;
|
|
313
|
+
}
|
|
314
|
+
// 统一的值格式化方法 - Column 层负责类型转换
|
|
315
|
+
formatValue(value) {
|
|
316
|
+
if (value === null || value === undefined) {
|
|
317
|
+
throw new Error('Cannot format null or undefined value');
|
|
318
|
+
}
|
|
319
|
+
// 处理数组类型 - 使用多重属性
|
|
320
|
+
if (this.options.isArray) {
|
|
321
|
+
if (!Array.isArray(value)) {
|
|
322
|
+
throw new Error('Array column requires array value');
|
|
323
|
+
}
|
|
324
|
+
// 返回字符串数组,每个元素会作为单独的三元组
|
|
325
|
+
return value.map(item => this.formatSingleValue(item));
|
|
326
|
+
}
|
|
327
|
+
return this.formatSingleValue(value);
|
|
328
|
+
}
|
|
329
|
+
// 格式化单个值
|
|
330
|
+
formatSingleValue(value) {
|
|
331
|
+
// 处理引用类型
|
|
332
|
+
if (this.options.referenceTarget && typeof value === 'string') {
|
|
333
|
+
return `<${value}>`;
|
|
334
|
+
}
|
|
335
|
+
// 根据数据类型格式化
|
|
336
|
+
switch (this.dataType) {
|
|
337
|
+
case 'string':
|
|
338
|
+
return `"${String(value).replace(/"/g, '\\"')}"`;
|
|
339
|
+
case 'integer':
|
|
340
|
+
return `"${Number(value)}"^^<http://www.w3.org/2001/XMLSchema#integer>`;
|
|
341
|
+
case 'boolean':
|
|
342
|
+
return `"${value}"^^<http://www.w3.org/2001/XMLSchema#boolean>`;
|
|
343
|
+
case 'datetime': {
|
|
344
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
345
|
+
return `"${date.toISOString()}"^^<http://www.w3.org/2001/XMLSchema#dateTime>`;
|
|
346
|
+
}
|
|
347
|
+
case 'json':
|
|
348
|
+
case 'object': {
|
|
349
|
+
const jsonString = JSON.stringify(value);
|
|
350
|
+
return `"${jsonString.replace(/"/g, '\\"')}"^^<http://www.w3.org/2001/XMLSchema#json>`;
|
|
351
|
+
}
|
|
352
|
+
case 'uri':
|
|
353
|
+
// URI 类型直接作为 NamedNode,不需要引号
|
|
354
|
+
// 简单的 URI 校验:必须包含 scheme (即包含冒号)
|
|
355
|
+
// 这可以排除像 "xpod_123" 这样的普通字符串,同时支持 http, https, urn, mailto 等
|
|
356
|
+
if (typeof value !== 'string' || !value.includes(':')) {
|
|
357
|
+
throw new Error(`URI column requires valid IRI (must contain scheme), got: ${value}`);
|
|
358
|
+
}
|
|
359
|
+
return `<${value}>`;
|
|
360
|
+
default:
|
|
361
|
+
return `"${String(value).replace(/"/g, '\\"')}"`;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
_a = entityKind;
|
|
366
|
+
PodColumnBase[_a] = 'PodColumn';
|
|
367
|
+
// 具体的列类型
|
|
368
|
+
export class PodStringColumn extends PodColumnBase {
|
|
369
|
+
constructor(name, options = {}) {
|
|
370
|
+
super(name, 'string', options);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
export class PodIntegerColumn extends PodColumnBase {
|
|
374
|
+
constructor(name, options = {}) {
|
|
375
|
+
super(name, 'integer', options);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
export class PodBooleanColumn extends PodColumnBase {
|
|
379
|
+
constructor(name, options = {}) {
|
|
380
|
+
super(name, 'boolean', options);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
export class PodDateTimeColumn extends PodColumnBase {
|
|
384
|
+
constructor(name, options = {}) {
|
|
385
|
+
super(name, 'datetime', options);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
export class PodJsonColumn extends PodColumnBase {
|
|
389
|
+
constructor(name, options = {}) {
|
|
390
|
+
super(name, 'json', options);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
export class PodObjectColumn extends PodColumnBase {
|
|
394
|
+
constructor(name, options = {}) {
|
|
395
|
+
super(name, 'object', options);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
export class PodUriColumn extends PodColumnBase {
|
|
399
|
+
constructor(name, options = {}) {
|
|
400
|
+
super(name, 'uri', options);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
export class PodArrayColumn extends PodColumnBase {
|
|
404
|
+
constructor(name, elementType, options = {}) {
|
|
405
|
+
super(name, 'array', options);
|
|
406
|
+
this.elementType = elementType;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
// ============ Schema 继承工具函数 ============
|
|
410
|
+
/**
|
|
411
|
+
* 验证子类列不能修改父类的 predicate
|
|
412
|
+
* @internal
|
|
413
|
+
*/
|
|
414
|
+
function validateColumnOverride(childColumn, parentColumn, columnName, childSchemaName, parentSchemaName) {
|
|
415
|
+
const childPredicate = childColumn.getPredicateUri?.() ?? childColumn.options?.predicate;
|
|
416
|
+
const parentPredicate = parentColumn.options?.predicate;
|
|
417
|
+
if (childPredicate && parentPredicate && childPredicate !== parentPredicate) {
|
|
418
|
+
throw new Error(`Schema 继承错误: 不能修改 "${columnName}" 列的 predicate。` +
|
|
419
|
+
`父 schema "${parentSchemaName}" 定义为 "${parentPredicate}",` +
|
|
420
|
+
`子 schema "${childSchemaName}" 尝试改为 "${childPredicate}"。` +
|
|
421
|
+
`子类只能添加约束(notNull, default),不能更改 predicate。`);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* 合并父子 schema 的列定义
|
|
426
|
+
* @internal
|
|
427
|
+
*/
|
|
428
|
+
function mergeSchemaColumns(parentSchema, childColumns, childSchemaName) {
|
|
429
|
+
const mergedColumns = {};
|
|
430
|
+
// 先复制父类所有列
|
|
431
|
+
for (const [name, col] of Object.entries(parentSchema.columns)) {
|
|
432
|
+
mergedColumns[name] = col;
|
|
433
|
+
}
|
|
434
|
+
// 处理子类列
|
|
435
|
+
for (const [name, childCol] of Object.entries(childColumns)) {
|
|
436
|
+
const parentCol = parentSchema.columns[name];
|
|
437
|
+
if (parentCol) {
|
|
438
|
+
// 覆盖父类列 - 验证 predicate 不变
|
|
439
|
+
if (!(childCol instanceof PodColumnBase)) {
|
|
440
|
+
validateColumnOverride(childCol, parentCol, name, childSchemaName, parentSchema.name);
|
|
441
|
+
// 继承父类的 predicate(如果子类没有指定)
|
|
442
|
+
const builder = childCol;
|
|
443
|
+
if (!builder.getPredicateUri?.() && !builder.options?.predicate) {
|
|
444
|
+
builder.options = { ...builder.options, predicate: parentCol.options?.predicate };
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
mergedColumns[name] = childCol;
|
|
449
|
+
}
|
|
450
|
+
return mergedColumns;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* SolidSchema - 独立的 schema 定义类
|
|
454
|
+
*
|
|
455
|
+
* 只包含表的结构信息(列、类型、谓词映射),不包含 base。
|
|
456
|
+
* 可以通过 .at(base) 方法绑定到具体位置,生成 PodTable。
|
|
457
|
+
*
|
|
458
|
+
* @example
|
|
459
|
+
* // 定义 schema(不绑定位置)
|
|
460
|
+
* const profileSchema = solidSchema('profile', {
|
|
461
|
+
* name: string('name').predicate(FOAF.name),
|
|
462
|
+
* avatar: uri('avatar').predicate(FOAF.img),
|
|
463
|
+
* }, {
|
|
464
|
+
* type: FOAF.Person,
|
|
465
|
+
* });
|
|
466
|
+
*
|
|
467
|
+
* // 绑定到具体位置
|
|
468
|
+
* const myProfile = profileSchema.at('/profile/card.ttl');
|
|
469
|
+
* const aliceProfile = profileSchema.at('https://alice.pod/profile/card.ttl');
|
|
470
|
+
*/
|
|
471
|
+
export class SolidSchema {
|
|
472
|
+
constructor(name, columns, options) {
|
|
473
|
+
this.name = name;
|
|
474
|
+
this.columns = columns;
|
|
475
|
+
this.options = options;
|
|
476
|
+
this.$kind = 'SolidSchema';
|
|
477
|
+
this.namespace = options.namespace;
|
|
478
|
+
this.subjectTemplate = options.subjectTemplate;
|
|
479
|
+
this.subClassOf = options.subClassOf
|
|
480
|
+
? (Array.isArray(options.subClassOf)
|
|
481
|
+
? options.subClassOf.map(resolveTermIri)
|
|
482
|
+
: [resolveTermIri(options.subClassOf)])
|
|
483
|
+
: undefined;
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* 绑定到具体位置,生成 PodTable
|
|
487
|
+
*
|
|
488
|
+
* @param base 资源路径(相对路径或绝对 IRI)
|
|
489
|
+
* @example
|
|
490
|
+
* const myProfile = profileSchema.at('/profile/card.ttl');
|
|
491
|
+
* const aliceProfile = profileSchema.at('https://alice.pod/profile/card.ttl');
|
|
492
|
+
*/
|
|
493
|
+
at(base) {
|
|
494
|
+
return new PodTable(this.name, this.columns, {
|
|
495
|
+
...this.options,
|
|
496
|
+
base,
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* 创建继承当前 schema 的子 schema
|
|
501
|
+
*
|
|
502
|
+
* 子类会继承父类的所有列,并可以:
|
|
503
|
+
* - 添加新的属性
|
|
504
|
+
* - 给继承的属性添加约束(如 notNull、default)
|
|
505
|
+
* - 但不能修改继承属性的 predicate
|
|
506
|
+
*
|
|
507
|
+
* @param name - 子 schema 名称
|
|
508
|
+
* @param columns - 子类新增或覆盖的列
|
|
509
|
+
* @param options - 子 schema 选项(必须提供 type)
|
|
510
|
+
* @returns 包含所有继承列和新列的子 schema
|
|
511
|
+
*
|
|
512
|
+
* @example
|
|
513
|
+
* const secretSchema = solidSchema('secret', {
|
|
514
|
+
* id: id(),
|
|
515
|
+
* name: string('name').predicate(VOCAB.name),
|
|
516
|
+
* createdAt: datetime('createdAt').predicate(VOCAB.createdAt),
|
|
517
|
+
* }, {
|
|
518
|
+
* type: 'https://vocab.example/Secret',
|
|
519
|
+
* });
|
|
520
|
+
*
|
|
521
|
+
* // 创建子 schema
|
|
522
|
+
* const apiKeySchema = secretSchema.extend('apiKey', {
|
|
523
|
+
* // 新增属性
|
|
524
|
+
* apiKey: string('apiKey').notNull().predicate(VOCAB.apiKey),
|
|
525
|
+
* // 增强父类属性(添加约束,但不能改 predicate)
|
|
526
|
+
* name: string('name').notNull(),
|
|
527
|
+
* }, {
|
|
528
|
+
* type: 'https://vocab.example/APIKey',
|
|
529
|
+
* });
|
|
530
|
+
*
|
|
531
|
+
* // apiKeySchema 包含: id, name(notNull), createdAt, apiKey
|
|
532
|
+
* // apiKeySchema.subClassOf 自动包含 'https://vocab.example/Secret'
|
|
533
|
+
*/
|
|
534
|
+
extend(name, columns, options) {
|
|
535
|
+
// 合并列
|
|
536
|
+
const mergedColumnDefs = mergeSchemaColumns(this, columns, name);
|
|
537
|
+
// 处理 subClassOf - 自动包含父类 type
|
|
538
|
+
const subClassOf = [this.type];
|
|
539
|
+
if (this.subClassOf) {
|
|
540
|
+
subClassOf.push(...this.subClassOf);
|
|
541
|
+
}
|
|
542
|
+
// 创建子 schema(使用 solidSchema 函数处理列转换)
|
|
543
|
+
return solidSchema(name, mergedColumnDefs, {
|
|
544
|
+
...options,
|
|
545
|
+
subClassOf,
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* 获取 RDF 类型
|
|
550
|
+
*/
|
|
551
|
+
get type() {
|
|
552
|
+
return resolveTermIri(this.options.type);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
/**
|
|
556
|
+
* 创建 SolidSchema(不绑定位置的 schema 定义)
|
|
557
|
+
*
|
|
558
|
+
* @example
|
|
559
|
+
* const profileSchema = solidSchema('profile', {
|
|
560
|
+
* name: string('name').predicate(FOAF.name),
|
|
561
|
+
* }, {
|
|
562
|
+
* type: FOAF.Person,
|
|
563
|
+
* });
|
|
564
|
+
*
|
|
565
|
+
* // 使用时绑定位置
|
|
566
|
+
* const myProfile = profileSchema.at('/profile/card.ttl');
|
|
567
|
+
*/
|
|
568
|
+
export function solidSchema(name, columns, options) {
|
|
569
|
+
// 复用 podTable 的列处理逻辑
|
|
570
|
+
const processedColumns = {};
|
|
571
|
+
for (const [key, value] of Object.entries(columns)) {
|
|
572
|
+
if (value instanceof PodColumnBase) {
|
|
573
|
+
processedColumns[key] = value;
|
|
574
|
+
continue;
|
|
575
|
+
}
|
|
576
|
+
let column;
|
|
577
|
+
switch (value.dataType) {
|
|
578
|
+
case 'integer':
|
|
579
|
+
column = new PodIntegerColumn(value.name, value.options);
|
|
580
|
+
break;
|
|
581
|
+
case 'datetime':
|
|
582
|
+
column = new PodDateTimeColumn(value.name, value.options);
|
|
583
|
+
break;
|
|
584
|
+
case 'boolean':
|
|
585
|
+
column = new PodBooleanColumn(value.name, value.options);
|
|
586
|
+
break;
|
|
587
|
+
case 'json':
|
|
588
|
+
column = new PodJsonColumn(value.name, value.options);
|
|
589
|
+
break;
|
|
590
|
+
case 'object':
|
|
591
|
+
column = new PodObjectColumn(value.name, value.options);
|
|
592
|
+
break;
|
|
593
|
+
case 'array': {
|
|
594
|
+
const elementType = (value.elementType ?? value.options.baseType ?? 'string');
|
|
595
|
+
column = new PodArrayColumn(value.name, elementType, value.options);
|
|
596
|
+
break;
|
|
597
|
+
}
|
|
598
|
+
case 'uri':
|
|
599
|
+
column = new PodUriColumn(value.name, value.options);
|
|
600
|
+
break;
|
|
601
|
+
case 'string':
|
|
602
|
+
default:
|
|
603
|
+
column = new PodStringColumn(value.name, value.options);
|
|
604
|
+
break;
|
|
605
|
+
}
|
|
606
|
+
const predicateUri = value.getPredicateUri();
|
|
607
|
+
if (predicateUri) {
|
|
608
|
+
column.predicate(predicateUri);
|
|
609
|
+
}
|
|
610
|
+
processedColumns[key] = column;
|
|
611
|
+
}
|
|
612
|
+
return new SolidSchema(name, processedColumns, options);
|
|
613
|
+
}
|
|
614
|
+
/**
|
|
615
|
+
* 检查目标是否为 SolidSchema
|
|
616
|
+
*/
|
|
617
|
+
export function isSolidSchema(target) {
|
|
618
|
+
return target instanceof SolidSchema || target?.$kind === 'SolidSchema';
|
|
619
|
+
}
|
|
620
|
+
// 表定义类 - 支持泛型以进行类型推断
|
|
621
|
+
export class PodTable {
|
|
622
|
+
constructor(name, columns, options) {
|
|
623
|
+
this.initialized = false;
|
|
624
|
+
const typeInput = options.type;
|
|
625
|
+
if (!typeInput) {
|
|
626
|
+
throw new Error('podTable requires a type (RDF class) via options.type');
|
|
627
|
+
}
|
|
628
|
+
const typeIndexOption = options.typeIndex;
|
|
629
|
+
const validTypeIndex = typeIndexOption === 'private' || typeIndexOption === 'public';
|
|
630
|
+
if (typeIndexOption && !validTypeIndex) {
|
|
631
|
+
console.warn(`Invalid typeIndex value "${typeIndexOption}", disabling TypeIndex registration.`);
|
|
632
|
+
}
|
|
633
|
+
const baseConfig = this.resolveBase(options.base, name);
|
|
634
|
+
this.resourcePath = baseConfig.resourcePath;
|
|
635
|
+
this.containerPath = baseConfig.containerPath;
|
|
636
|
+
const subjectTemplateInfo = this.resolveSubjectTemplate(options.subjectTemplate, baseConfig.resourcePath, baseConfig.containerPath, name);
|
|
637
|
+
this.subjectTemplate = subjectTemplateInfo.template;
|
|
638
|
+
this.hasCustomSubjectTemplate = subjectTemplateInfo.isCustom;
|
|
639
|
+
this.resourceMode = options.resourceMode ?? (options.sparqlEndpoint ? 'sparql' : undefined);
|
|
640
|
+
this.sparqlEndpoint = options.sparqlEndpoint;
|
|
641
|
+
// TypeIndex 注册默认取决于是否提供 typeIndex,且 autoRegister 未显式禁用
|
|
642
|
+
this.registerTypeIndexEnabled = validTypeIndex && options.autoRegister !== false;
|
|
643
|
+
this.config = {
|
|
644
|
+
name,
|
|
645
|
+
base: baseConfig.resourcePath,
|
|
646
|
+
type: resolveTermIri(typeInput),
|
|
647
|
+
namespace: options.namespace,
|
|
648
|
+
typeIndex: validTypeIndex ? typeIndexOption : undefined,
|
|
649
|
+
saiRegistryPath: options.saiRegistryPath,
|
|
650
|
+
subjectTemplate: this.subjectTemplate,
|
|
651
|
+
autoRegister: options.autoRegister,
|
|
652
|
+
containerPath: baseConfig.containerPath,
|
|
653
|
+
hooks: options.hooks,
|
|
654
|
+
};
|
|
655
|
+
this.parentClasses = this.normalizeParents(options.subClassOf ?? []);
|
|
656
|
+
if (this.parentClasses.length > 0) {
|
|
657
|
+
this.config.subClassOf = [...this.parentClasses];
|
|
658
|
+
}
|
|
659
|
+
this.columns = columns;
|
|
660
|
+
// 将列直接添加到表对象上,以便直接访问
|
|
661
|
+
Object.assign(this, columns);
|
|
662
|
+
// 记录列所属的表,便于 JOIN/分组等语义解析,并检查主键数量
|
|
663
|
+
let primaryKeyCount = 0;
|
|
664
|
+
for (const column of Object.values(columns)) {
|
|
665
|
+
if (column.options.primaryKey) {
|
|
666
|
+
primaryKeyCount++;
|
|
667
|
+
}
|
|
668
|
+
column.table = this;
|
|
669
|
+
column.tableName = name;
|
|
670
|
+
// 检查所有列是否都有有效的 predicate 或表级 namespace
|
|
671
|
+
if (!column.options.predicate && // 没有明确的 predicate
|
|
672
|
+
!(column._virtualId) && // 不是虚拟 ID 列 (@id)
|
|
673
|
+
!options.namespace // 表没有定义 namespace
|
|
674
|
+
) {
|
|
675
|
+
throw new Error(`Column "${column.name}" in table "${name}" is missing a predicate. Please set a 'predicate' option for the column or a 'namespace' for the table.`);
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
if (primaryKeyCount !== 1) {
|
|
679
|
+
throw new Error(`PodTable "${name}" must have exactly one primary key column. Found ${primaryKeyCount}.`);
|
|
680
|
+
}
|
|
681
|
+
// 初始化 drizzle-zod 兼容的属性
|
|
682
|
+
this.$inferSelect = {};
|
|
683
|
+
this.$inferInsert = {};
|
|
684
|
+
this.$inferUpdate = {};
|
|
685
|
+
// 初始化 _ 属性
|
|
686
|
+
this._ = {
|
|
687
|
+
brand: 'Table',
|
|
688
|
+
config: this.config,
|
|
689
|
+
name,
|
|
690
|
+
schema: undefined,
|
|
691
|
+
columns,
|
|
692
|
+
inferSelect: {},
|
|
693
|
+
inferInsert: {},
|
|
694
|
+
inferUpdate: {}
|
|
695
|
+
};
|
|
696
|
+
this.mapping = this.buildTableMapping();
|
|
697
|
+
}
|
|
698
|
+
// 获取容器路径
|
|
699
|
+
getContainerPath() {
|
|
700
|
+
return this.containerPath;
|
|
701
|
+
}
|
|
702
|
+
// 获取 RDF 类
|
|
703
|
+
getType() {
|
|
704
|
+
return this.config.type;
|
|
705
|
+
}
|
|
706
|
+
/**
|
|
707
|
+
* @deprecated 使用 getType()
|
|
708
|
+
*/
|
|
709
|
+
getRdfClass() {
|
|
710
|
+
return this.getType();
|
|
711
|
+
}
|
|
712
|
+
// 获取命名空间
|
|
713
|
+
getNamespace() {
|
|
714
|
+
return this.config.namespace;
|
|
715
|
+
}
|
|
716
|
+
getSubjectTemplate() {
|
|
717
|
+
return this.subjectTemplate;
|
|
718
|
+
}
|
|
719
|
+
/**
|
|
720
|
+
* 检查是否有用户提供的 subjectTemplate
|
|
721
|
+
*/
|
|
722
|
+
hasCustomTemplate() {
|
|
723
|
+
return this.hasCustomSubjectTemplate;
|
|
724
|
+
}
|
|
725
|
+
getSubClassOf() {
|
|
726
|
+
return [...this.parentClasses];
|
|
727
|
+
}
|
|
728
|
+
getMapping() {
|
|
729
|
+
return this.mapping;
|
|
730
|
+
}
|
|
731
|
+
/**
|
|
732
|
+
* 获取表的 schema 定义(用于联邦查询)
|
|
733
|
+
*
|
|
734
|
+
* 返回只包含结构信息的 SolidSchema,不包含 base
|
|
735
|
+
* 用于 relations() 中的联邦查询,数据位置通过 discover 动态发现
|
|
736
|
+
*
|
|
737
|
+
* @example
|
|
738
|
+
* const friendsRelations = relations(friends, ({ many }) => ({
|
|
739
|
+
* posts: many(posts.$schema, {
|
|
740
|
+
* discover: (friend) => friend.webId,
|
|
741
|
+
* }),
|
|
742
|
+
* }));
|
|
743
|
+
*/
|
|
744
|
+
get $schema() {
|
|
745
|
+
return new SolidSchema(this.config.name, this.columns, {
|
|
746
|
+
type: this.config.type,
|
|
747
|
+
namespace: this.config.namespace,
|
|
748
|
+
subjectTemplate: this.subjectTemplate,
|
|
749
|
+
subClassOf: this.parentClasses.length > 0 ? [...this.parentClasses] : undefined,
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
/**
|
|
753
|
+
* Generate a relative URI for a record by ID
|
|
754
|
+
*
|
|
755
|
+
* This returns a Pod-relative URI that drizzle-solid will automatically
|
|
756
|
+
* resolve to an absolute URI using the Pod URL at runtime.
|
|
757
|
+
*
|
|
758
|
+
* @param id - The record ID (typically a nanoid or user-defined identifier)
|
|
759
|
+
* @returns Relative URI like '/.data/agents/xK9mN2.ttl' or '/.data/tags.ttl#abc123'
|
|
760
|
+
*
|
|
761
|
+
* @example
|
|
762
|
+
* // Generate URI for a record by its ID
|
|
763
|
+
* const agentUri = agentTable.resolveUri('xK9mN2pL');
|
|
764
|
+
* // => '/.data/agents/xK9mN2pL.ttl'
|
|
765
|
+
*
|
|
766
|
+
* // Prefer using @id from query results when available
|
|
767
|
+
* const msg = { maker: existingAgent['@id'], content: 'Hello!' }
|
|
768
|
+
*/
|
|
769
|
+
resolveUri(id) {
|
|
770
|
+
// Apply subjectTemplate
|
|
771
|
+
const template = this.subjectTemplate;
|
|
772
|
+
const resolved = template.replace(/\{id\}/g, id);
|
|
773
|
+
// Build relative URI based on mode
|
|
774
|
+
if (resolved.startsWith('#')) {
|
|
775
|
+
// Fragment mode: /.data/tags.ttl#id
|
|
776
|
+
const resourcePath = this.resourcePath;
|
|
777
|
+
return `${resourcePath}${resolved}`;
|
|
778
|
+
}
|
|
779
|
+
// Document mode: /.data/agents/openrouter.ttl
|
|
780
|
+
const normalizedContainer = this.containerPath.endsWith('/')
|
|
781
|
+
? this.containerPath
|
|
782
|
+
: `${this.containerPath}/`;
|
|
783
|
+
return `${normalizedContainer}${resolved}`;
|
|
784
|
+
}
|
|
785
|
+
resolveBase(base, tableName) {
|
|
786
|
+
if (!base || base.trim().length === 0) {
|
|
787
|
+
throw new Error(`podTable '${tableName}' requires a 'base' option.\n` +
|
|
788
|
+
`Examples:\n` +
|
|
789
|
+
` base: '/data/${tableName}.ttl' // relative path for your Pod\n` +
|
|
790
|
+
` base: '/data/${tableName}/' // container path\n` +
|
|
791
|
+
` base: 'https://other.pod/data/${tableName}.ttl' // absolute IRI for other Pods`);
|
|
792
|
+
}
|
|
793
|
+
const normalizedInput = this.normalizeBaseInput(base);
|
|
794
|
+
const normalizedPath = this.normalizeResourcePath(normalizedInput);
|
|
795
|
+
if (normalizedPath.endsWith('/')) {
|
|
796
|
+
// Container/directory path - for Document mode
|
|
797
|
+
const containerPath = this.ensureTrailingSlash(normalizedPath);
|
|
798
|
+
return {
|
|
799
|
+
resourcePath: containerPath,
|
|
800
|
+
containerPath
|
|
801
|
+
};
|
|
802
|
+
}
|
|
803
|
+
// File path - for Fragment mode
|
|
804
|
+
const containerPath = this.ensureTrailingSlash(this.deriveContainerPath(normalizedPath));
|
|
805
|
+
return {
|
|
806
|
+
resourcePath: normalizedPath,
|
|
807
|
+
containerPath,
|
|
808
|
+
};
|
|
809
|
+
}
|
|
810
|
+
normalizeBaseInput(rawBase) {
|
|
811
|
+
const trimmed = rawBase.trim();
|
|
812
|
+
if (trimmed.length === 0) {
|
|
813
|
+
throw new Error('podTable requires a non-empty base');
|
|
814
|
+
}
|
|
815
|
+
const schemeMatch = trimmed.match(/^([a-zA-Z][\w+.-]*):\/\/(.*)$/);
|
|
816
|
+
if (schemeMatch) {
|
|
817
|
+
const [, scheme, remainder] = schemeMatch;
|
|
818
|
+
const normalizedScheme = scheme.toLowerCase();
|
|
819
|
+
const remainderTrimmed = remainder.trim();
|
|
820
|
+
if (normalizedScheme === 'http' || normalizedScheme === 'https') {
|
|
821
|
+
const rest = remainderTrimmed.length === 0 ? '' : remainderTrimmed;
|
|
822
|
+
return `${normalizedScheme}://${rest}`;
|
|
823
|
+
}
|
|
824
|
+
const normalizedRemainder = remainderTrimmed.length === 0 ? '/' : remainderTrimmed;
|
|
825
|
+
return normalizedRemainder.startsWith('/') ? normalizedRemainder : `/${normalizedRemainder}`;
|
|
826
|
+
}
|
|
827
|
+
return trimmed;
|
|
828
|
+
}
|
|
829
|
+
normalizeResourcePath(resourcePath) {
|
|
830
|
+
if (typeof resourcePath !== 'string' || resourcePath.trim().length === 0) {
|
|
831
|
+
throw new Error('podTable requires a non-empty base');
|
|
832
|
+
}
|
|
833
|
+
if (/^[a-zA-Z][\w+.-]*:\/\//.test(resourcePath)) {
|
|
834
|
+
return resourcePath;
|
|
835
|
+
}
|
|
836
|
+
const trimmed = resourcePath.trim().replace(/^(\.\/)+/, '');
|
|
837
|
+
const normalized = trimmed.replace(/\/+/g, '/');
|
|
838
|
+
if (normalized.startsWith('/')) {
|
|
839
|
+
return normalized;
|
|
840
|
+
}
|
|
841
|
+
return `/${normalized}`;
|
|
842
|
+
}
|
|
843
|
+
deriveContainerPath(resourcePath) {
|
|
844
|
+
const withoutTrailingSlash = resourcePath.endsWith('/')
|
|
845
|
+
? resourcePath.slice(0, -1)
|
|
846
|
+
: resourcePath;
|
|
847
|
+
const lastSlash = withoutTrailingSlash.lastIndexOf('/');
|
|
848
|
+
if (lastSlash === -1) {
|
|
849
|
+
return '/';
|
|
850
|
+
}
|
|
851
|
+
return withoutTrailingSlash.slice(0, lastSlash + 1);
|
|
852
|
+
}
|
|
853
|
+
ensureTrailingSlash(path) {
|
|
854
|
+
return path.endsWith('/') ? path : `${path}/`;
|
|
855
|
+
}
|
|
856
|
+
getResourcePath() {
|
|
857
|
+
return this.resourcePath;
|
|
858
|
+
}
|
|
859
|
+
getResourceMode() {
|
|
860
|
+
return this.resourceMode;
|
|
861
|
+
}
|
|
862
|
+
getSparqlEndpoint() {
|
|
863
|
+
return this.sparqlEndpoint;
|
|
864
|
+
}
|
|
865
|
+
shouldRegisterTypeIndex() {
|
|
866
|
+
return this.registerTypeIndexEnabled;
|
|
867
|
+
}
|
|
868
|
+
async init(initializer) {
|
|
869
|
+
await initializer.registerTable(this);
|
|
870
|
+
}
|
|
871
|
+
isInitialized() {
|
|
872
|
+
return this.initialized;
|
|
873
|
+
}
|
|
874
|
+
markInitialized(initialized = true) {
|
|
875
|
+
this.initialized = initialized;
|
|
876
|
+
}
|
|
877
|
+
/**
|
|
878
|
+
* 动态更新 base(TypeIndex 自动发现等场景)
|
|
879
|
+
*/
|
|
880
|
+
setBase(base) {
|
|
881
|
+
const resolved = this.resolveBase(base, this.config.name);
|
|
882
|
+
this.resourcePath = resolved.resourcePath;
|
|
883
|
+
this.containerPath = resolved.containerPath;
|
|
884
|
+
this.config.base = resolved.resourcePath;
|
|
885
|
+
this.config.containerPath = resolved.containerPath; // Sync config.containerPath
|
|
886
|
+
if (this._?.config) {
|
|
887
|
+
this._.config.base = this.config.base;
|
|
888
|
+
this._.config.containerPath = this.config.containerPath;
|
|
889
|
+
}
|
|
890
|
+
if (!this.hasCustomSubjectTemplate) {
|
|
891
|
+
this.subjectTemplate = this.buildDefaultSubjectTemplate(this.config.base, this.config.containerPath, this.config.name);
|
|
892
|
+
this.config.subjectTemplate = this.subjectTemplate;
|
|
893
|
+
if (this._?.config) {
|
|
894
|
+
this._.config.subjectTemplate = this.subjectTemplate;
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
this.mapping = this.buildTableMapping();
|
|
898
|
+
}
|
|
899
|
+
/**
|
|
900
|
+
* 动态更新 subjectTemplate(SAI DataRegistration 自动发现等场景)
|
|
901
|
+
*/
|
|
902
|
+
setSubjectTemplate(template) {
|
|
903
|
+
this.subjectTemplate = template;
|
|
904
|
+
this.hasCustomSubjectTemplate = true;
|
|
905
|
+
this.config.subjectTemplate = template;
|
|
906
|
+
if (this._?.config) {
|
|
907
|
+
this._.config.subjectTemplate = template;
|
|
908
|
+
}
|
|
909
|
+
this.mapping = this.buildTableMapping();
|
|
910
|
+
}
|
|
911
|
+
/**
|
|
912
|
+
* 动态设置 SPARQL endpoint(自动发现等场景)
|
|
913
|
+
*/
|
|
914
|
+
setSparqlEndpoint(endpoint) {
|
|
915
|
+
this.sparqlEndpoint = endpoint;
|
|
916
|
+
if (!this.resourceMode) {
|
|
917
|
+
this.resourceMode = 'sparql';
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
// 获取所有列
|
|
921
|
+
getColumns() {
|
|
922
|
+
return this.columns;
|
|
923
|
+
}
|
|
924
|
+
getColumn(name) {
|
|
925
|
+
return this.columns[name];
|
|
926
|
+
}
|
|
927
|
+
// 检查列是否存在
|
|
928
|
+
hasColumn(name) {
|
|
929
|
+
return name in this.columns;
|
|
930
|
+
}
|
|
931
|
+
resolveSubjectTemplate(template, resourcePath, containerPath, tableName) {
|
|
932
|
+
if (template && template.trim().length > 0) {
|
|
933
|
+
return { template: template.trim(), isCustom: true };
|
|
934
|
+
}
|
|
935
|
+
return {
|
|
936
|
+
template: this.buildDefaultSubjectTemplate(resourcePath, containerPath, tableName),
|
|
937
|
+
isCustom: false
|
|
938
|
+
};
|
|
939
|
+
}
|
|
940
|
+
buildDefaultSubjectTemplate(resourcePath, containerPath, tableName = 'resource') {
|
|
941
|
+
const normalizedContainer = this.ensureTrailingSlash(containerPath || '');
|
|
942
|
+
// If the table base is a container (document mode), containerPath should end with `${tableName}/`.
|
|
943
|
+
// Otherwise, assume fragment mode.
|
|
944
|
+
const isDocumentMode = normalizedContainer.endsWith(`${tableName}/`);
|
|
945
|
+
if (isDocumentMode) {
|
|
946
|
+
return '{id}.ttl';
|
|
947
|
+
}
|
|
948
|
+
// Fragment mode: all rows in one resource, distinguished by fragment.
|
|
949
|
+
// resourcePath is expected to be the concrete document path (e.g. `/data/tags.ttl`).
|
|
950
|
+
if (resourcePath && resourcePath.includes('{')) {
|
|
951
|
+
return resourcePath;
|
|
952
|
+
}
|
|
953
|
+
return '#{id}';
|
|
954
|
+
}
|
|
955
|
+
buildTableMapping() {
|
|
956
|
+
const mappedColumns = {};
|
|
957
|
+
for (const column of Object.values(this.columns)) {
|
|
958
|
+
mappedColumns[column.name] = this.buildColumnMapping(column);
|
|
959
|
+
}
|
|
960
|
+
return {
|
|
961
|
+
name: this.config.name,
|
|
962
|
+
type: this.config.type,
|
|
963
|
+
subjectTemplate: this.subjectTemplate,
|
|
964
|
+
namespace: this.config.namespace,
|
|
965
|
+
subClassOf: this.parentClasses.length > 0 ? [...this.parentClasses] : undefined,
|
|
966
|
+
columns: mappedColumns,
|
|
967
|
+
relations: this.relations
|
|
968
|
+
};
|
|
969
|
+
}
|
|
970
|
+
buildColumnMapping(column) {
|
|
971
|
+
const predicate = column._virtualId
|
|
972
|
+
? '@id'
|
|
973
|
+
: column.getPredicate(this.config.namespace);
|
|
974
|
+
return {
|
|
975
|
+
column: column.name,
|
|
976
|
+
predicate,
|
|
977
|
+
kind: column.isReference() ? 'object' : 'datatype',
|
|
978
|
+
datatype: this.inferColumnDatatype(column),
|
|
979
|
+
referenceTarget: column.getReferenceTarget(),
|
|
980
|
+
isArray: column.options.isArray ?? false,
|
|
981
|
+
inverse: column.isInverse()
|
|
982
|
+
};
|
|
983
|
+
}
|
|
984
|
+
inferColumnDatatype(column) {
|
|
985
|
+
switch (column.dataType) {
|
|
986
|
+
case 'string':
|
|
987
|
+
return 'http://www.w3.org/2001/XMLSchema#string';
|
|
988
|
+
case 'integer':
|
|
989
|
+
return 'http://www.w3.org/2001/XMLSchema#integer';
|
|
990
|
+
case 'boolean':
|
|
991
|
+
return 'http://www.w3.org/2001/XMLSchema#boolean';
|
|
992
|
+
case 'datetime':
|
|
993
|
+
return 'http://www.w3.org/2001/XMLSchema#dateTime';
|
|
994
|
+
case 'json':
|
|
995
|
+
case 'object':
|
|
996
|
+
return 'http://www.w3.org/2001/XMLSchema#json';
|
|
997
|
+
case 'uri':
|
|
998
|
+
return undefined;
|
|
999
|
+
default:
|
|
1000
|
+
return undefined;
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
normalizeParents(value) {
|
|
1004
|
+
if (!value) {
|
|
1005
|
+
return [];
|
|
1006
|
+
}
|
|
1007
|
+
const entries = Array.isArray(value) ? value : [value];
|
|
1008
|
+
const normalized = entries
|
|
1009
|
+
.map((entry) => resolveTermIri(entry))
|
|
1010
|
+
.filter((entry) => entry && entry.length > 0);
|
|
1011
|
+
return Array.from(new Set(normalized));
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
_b = entityKind;
|
|
1015
|
+
PodTable[_b] = 'PodTable';
|
|
1016
|
+
export function boolean(name, options = {}) {
|
|
1017
|
+
return new ColumnBuilder(name, 'boolean', options);
|
|
1018
|
+
}
|
|
1019
|
+
export function timestamp(name, options = {}) {
|
|
1020
|
+
return new ColumnBuilder(name, 'datetime', options);
|
|
1021
|
+
}
|
|
1022
|
+
export function json(name, options = {}) {
|
|
1023
|
+
return new ColumnBuilder(name, 'json', options);
|
|
1024
|
+
}
|
|
1025
|
+
export function object(name, options = {}) {
|
|
1026
|
+
return new ColumnBuilder(name, 'object', options);
|
|
1027
|
+
}
|
|
1028
|
+
export function uri(name, options = {}) {
|
|
1029
|
+
return new ColumnBuilder(name, 'uri', options);
|
|
1030
|
+
}
|
|
1031
|
+
// IRI 别名,方便习惯使用 IRI 术语的场景
|
|
1032
|
+
export function iri(name, options = {}) {
|
|
1033
|
+
return uri(name, options);
|
|
1034
|
+
}
|
|
1035
|
+
// Pod 专用的列定义函数(保留向后兼容)
|
|
1036
|
+
export function podString(name, options = {}) {
|
|
1037
|
+
return new PodStringColumn(name, options);
|
|
1038
|
+
}
|
|
1039
|
+
export function podInteger(name, options = {}) {
|
|
1040
|
+
return new PodIntegerColumn(name, options);
|
|
1041
|
+
}
|
|
1042
|
+
export function podBoolean(name, options = {}) {
|
|
1043
|
+
return new PodBooleanColumn(name, options);
|
|
1044
|
+
}
|
|
1045
|
+
export function podDateTime(name, options = {}) {
|
|
1046
|
+
return new PodDateTimeColumn(name, options);
|
|
1047
|
+
}
|
|
1048
|
+
export function podJson(name, options = {}) {
|
|
1049
|
+
return new PodJsonColumn(name, options);
|
|
1050
|
+
}
|
|
1051
|
+
export function podObject(name, options = {}) {
|
|
1052
|
+
return new PodObjectColumn(name, options);
|
|
1053
|
+
}
|
|
1054
|
+
// 专用 ID 列,自动 predicate 为 @id,便于构造 subject IRI
|
|
1055
|
+
// 特殊 ID 列:不单独存储谓词,只用于生成/解析 subject/@id(最多一个)
|
|
1056
|
+
export function id(name = 'id', options = {}) {
|
|
1057
|
+
const col = new PodStringColumn(name, {
|
|
1058
|
+
...options,
|
|
1059
|
+
predicate: '@id',
|
|
1060
|
+
primaryKey: true,
|
|
1061
|
+
required: true,
|
|
1062
|
+
defaultValue: options.defaultValue ?? generateNanoId // Default to NanoID generation
|
|
1063
|
+
});
|
|
1064
|
+
// 标记为"虚拟 ID 列",生成/解析 subject 时使用,但不额外输出三元组
|
|
1065
|
+
col._virtualId = true;
|
|
1066
|
+
return col;
|
|
1067
|
+
}
|
|
1068
|
+
// 创建类型安全的builder函数
|
|
1069
|
+
export function string(name, options = {}) {
|
|
1070
|
+
return new ColumnBuilder(name, 'string', options);
|
|
1071
|
+
}
|
|
1072
|
+
export function int(name, options = {}) {
|
|
1073
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1074
|
+
}
|
|
1075
|
+
export function integer(name, options = {}) {
|
|
1076
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1077
|
+
}
|
|
1078
|
+
export function date(name, options = {}) {
|
|
1079
|
+
return new ColumnBuilder(name, 'datetime', options);
|
|
1080
|
+
}
|
|
1081
|
+
// 时间相关列类型别名
|
|
1082
|
+
export function datetime(name, options = {}) {
|
|
1083
|
+
return new ColumnBuilder(name, 'datetime', options);
|
|
1084
|
+
}
|
|
1085
|
+
// 文本相关列类型别名
|
|
1086
|
+
export function text(name, options = {}) {
|
|
1087
|
+
return new ColumnBuilder(name, 'string', options);
|
|
1088
|
+
}
|
|
1089
|
+
export function varchar(name, options = {}) {
|
|
1090
|
+
return new ColumnBuilder(name, 'string', options);
|
|
1091
|
+
}
|
|
1092
|
+
export function char(name, options = {}) {
|
|
1093
|
+
return new ColumnBuilder(name, 'string', options);
|
|
1094
|
+
}
|
|
1095
|
+
// 数字相关列类型别名
|
|
1096
|
+
export function bigint(name, options = {}) {
|
|
1097
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1098
|
+
}
|
|
1099
|
+
export function smallint(name, options = {}) {
|
|
1100
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1101
|
+
}
|
|
1102
|
+
export function tinyint(name, options = {}) {
|
|
1103
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1104
|
+
}
|
|
1105
|
+
export function mediumint(name, options = {}) {
|
|
1106
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1107
|
+
}
|
|
1108
|
+
export function serial(name, options = {}) {
|
|
1109
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1110
|
+
}
|
|
1111
|
+
// 浮点数相关列类型别名
|
|
1112
|
+
export function real(name, options = {}) {
|
|
1113
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1114
|
+
}
|
|
1115
|
+
export function decimal(name, options = {}) {
|
|
1116
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1117
|
+
}
|
|
1118
|
+
export function numeric(name, options = {}) {
|
|
1119
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1120
|
+
}
|
|
1121
|
+
export function float(name, options = {}) {
|
|
1122
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1123
|
+
}
|
|
1124
|
+
export function double(name, options = {}) {
|
|
1125
|
+
return new ColumnBuilder(name, 'integer', options);
|
|
1126
|
+
}
|
|
1127
|
+
// JSON相关别名
|
|
1128
|
+
export function jsonb(name, options = {}) {
|
|
1129
|
+
return new ColumnBuilder(name, 'json', options);
|
|
1130
|
+
}
|
|
1131
|
+
export function podTable(name, columns, options) {
|
|
1132
|
+
const processedColumns = {};
|
|
1133
|
+
for (const [key, value] of Object.entries(columns)) {
|
|
1134
|
+
if (value instanceof PodColumnBase) {
|
|
1135
|
+
processedColumns[key] = value;
|
|
1136
|
+
continue;
|
|
1137
|
+
}
|
|
1138
|
+
let column;
|
|
1139
|
+
switch (value.dataType) {
|
|
1140
|
+
case 'integer':
|
|
1141
|
+
column = new PodIntegerColumn(value.name, value.options);
|
|
1142
|
+
break;
|
|
1143
|
+
case 'datetime':
|
|
1144
|
+
column = new PodDateTimeColumn(value.name, value.options);
|
|
1145
|
+
break;
|
|
1146
|
+
case 'boolean':
|
|
1147
|
+
column = new PodBooleanColumn(value.name, value.options);
|
|
1148
|
+
break;
|
|
1149
|
+
case 'json':
|
|
1150
|
+
column = new PodJsonColumn(value.name, value.options);
|
|
1151
|
+
break;
|
|
1152
|
+
case 'object':
|
|
1153
|
+
column = new PodObjectColumn(value.name, value.options);
|
|
1154
|
+
break;
|
|
1155
|
+
case 'array': {
|
|
1156
|
+
const elementType = (value.elementType ?? value.options.baseType ?? 'string');
|
|
1157
|
+
column = new PodArrayColumn(value.name, elementType, value.options);
|
|
1158
|
+
break;
|
|
1159
|
+
}
|
|
1160
|
+
case 'uri':
|
|
1161
|
+
column = new PodUriColumn(value.name, value.options);
|
|
1162
|
+
break;
|
|
1163
|
+
case 'string':
|
|
1164
|
+
default:
|
|
1165
|
+
column = new PodStringColumn(value.name, value.options);
|
|
1166
|
+
break;
|
|
1167
|
+
}
|
|
1168
|
+
const predicateUri = value.getPredicateUri();
|
|
1169
|
+
if (predicateUri) {
|
|
1170
|
+
column.predicate(predicateUri);
|
|
1171
|
+
}
|
|
1172
|
+
processedColumns[key] = column;
|
|
1173
|
+
}
|
|
1174
|
+
return new PodTable(name, processedColumns, options);
|
|
1175
|
+
}
|
|
1176
|
+
export function relations(table, builder) {
|
|
1177
|
+
const helpers = {
|
|
1178
|
+
one: (target, options = {}) => {
|
|
1179
|
+
const isFederated = isSolidSchema(target);
|
|
1180
|
+
return {
|
|
1181
|
+
type: 'one',
|
|
1182
|
+
table: target,
|
|
1183
|
+
fields: options.fields,
|
|
1184
|
+
references: options.references,
|
|
1185
|
+
relationName: options.relationName,
|
|
1186
|
+
discover: options.discover,
|
|
1187
|
+
isFederated,
|
|
1188
|
+
};
|
|
1189
|
+
},
|
|
1190
|
+
many: (target, options = {}) => {
|
|
1191
|
+
const isFederated = isSolidSchema(target);
|
|
1192
|
+
return {
|
|
1193
|
+
type: 'many',
|
|
1194
|
+
table: target,
|
|
1195
|
+
fields: options.fields,
|
|
1196
|
+
references: options.references,
|
|
1197
|
+
relationName: options.relationName,
|
|
1198
|
+
discover: options.discover,
|
|
1199
|
+
isFederated,
|
|
1200
|
+
};
|
|
1201
|
+
}
|
|
1202
|
+
};
|
|
1203
|
+
const defs = builder(helpers);
|
|
1204
|
+
table.relations = defs;
|
|
1205
|
+
return defs;
|
|
1206
|
+
}
|
|
1207
|
+
// 常用的 RDF 谓词常量
|
|
1208
|
+
export const RDF_PREDICATES = {
|
|
1209
|
+
// Schema.org 常用谓词
|
|
1210
|
+
SCHEMA_NAME: 'https://schema.org/name',
|
|
1211
|
+
SCHEMA_EMAIL: 'https://schema.org/email',
|
|
1212
|
+
SCHEMA_IDENTIFIER: 'https://schema.org/identifier',
|
|
1213
|
+
SCHEMA_DATE_CREATED: 'https://schema.org/dateCreated',
|
|
1214
|
+
SCHEMA_DATE_MODIFIED: 'https://schema.org/dateModified',
|
|
1215
|
+
SCHEMA_DESCRIPTION: 'https://schema.org/description',
|
|
1216
|
+
SCHEMA_URL: 'https://schema.org/url',
|
|
1217
|
+
SCHEMA_TITLE: 'https://schema.org/title',
|
|
1218
|
+
SCHEMA_TEXT: 'https://schema.org/text',
|
|
1219
|
+
SCHEMA_AUTHOR: 'https://schema.org/author',
|
|
1220
|
+
SCHEMA_DATE_PUBLISHED: 'https://schema.org/datePublished',
|
|
1221
|
+
// FOAF 常用谓词
|
|
1222
|
+
FOAF_NAME: 'http://xmlns.com/foaf/0.1/name',
|
|
1223
|
+
FOAF_MBOX: 'http://xmlns.com/foaf/0.1/mbox',
|
|
1224
|
+
FOAF_HOMEPAGE: 'http://xmlns.com/foaf/0.1/homepage',
|
|
1225
|
+
// Dublin Core 常用谓词
|
|
1226
|
+
DC_TITLE: 'http://purl.org/dc/terms/title',
|
|
1227
|
+
DC_DESCRIPTION: 'http://purl.org/dc/terms/description',
|
|
1228
|
+
DC_CREATED: 'http://purl.org/dc/terms/created',
|
|
1229
|
+
DC_MODIFIED: 'http://purl.org/dc/terms/modified',
|
|
1230
|
+
};
|
|
1231
|
+
// 常用的 RDF 类型常量
|
|
1232
|
+
export const RDF_CLASSES = {
|
|
1233
|
+
// Schema.org 常用类型
|
|
1234
|
+
SCHEMA_PERSON: 'https://schema.org/Person',
|
|
1235
|
+
SCHEMA_BLOG_POSTING: 'https://schema.org/BlogPosting',
|
|
1236
|
+
SCHEMA_ARTICLE: 'https://schema.org/Article',
|
|
1237
|
+
SCHEMA_ORGANIZATION: 'https://schema.org/Organization',
|
|
1238
|
+
SCHEMA_EVENT: 'https://schema.org/Event',
|
|
1239
|
+
SCHEMA_PLACE: 'https://schema.org/Place',
|
|
1240
|
+
// FOAF 常用类型
|
|
1241
|
+
FOAF_PERSON: 'http://xmlns.com/foaf/0.1/Person',
|
|
1242
|
+
FOAF_ORGANIZATION: 'http://xmlns.com/foaf/0.1/Organization',
|
|
1243
|
+
// 自定义应用类型示例
|
|
1244
|
+
APP_USER: 'https://myapp.com/vocab#User',
|
|
1245
|
+
APP_POST: 'https://myapp.com/vocab#Post',
|
|
1246
|
+
APP_COMMENT: 'https://myapp.com/vocab#Comment',
|
|
1247
|
+
APP_TAG: 'https://myapp.com/vocab#Tag',
|
|
1248
|
+
};
|
|
1249
|
+
//# sourceMappingURL=pod-table.js.map
|