diff --git a/app/lib/class/AccessControl.ts b/app/lib/class/AccessControl.ts index 3a74ff2..f956027 100644 --- a/app/lib/class/AccessControl.ts +++ b/app/lib/class/AccessControl.ts @@ -1,10 +1,10 @@ -import { ObjectMapping } from "rdfjs-wrapper" +import { TermAs, TermFrom } from "@rdfjs/wrapper" import { Policy } from "@/app/lib/class/Policy" import { ACP } from "@/app/lib/class/Vocabulary" import { Typed } from "@/app/lib/class/Typed"; export class AccessControl extends Typed { get apply(): Set { - return this.objects(ACP.apply, ObjectMapping.as(Policy), ObjectMapping.as(Policy)) + return this.objects(ACP.apply, TermAs.instance(Policy), TermFrom.instance) } } diff --git a/app/lib/class/AccessControlResource.ts b/app/lib/class/AccessControlResource.ts index 21cf49d..558145c 100644 --- a/app/lib/class/AccessControlResource.ts +++ b/app/lib/class/AccessControlResource.ts @@ -1,18 +1,18 @@ -import { ValueMapping, TermMapping, ObjectMapping } from "rdfjs-wrapper" +import { NamedNodeAs, NamedNodeFrom, TermAs, TermFrom } from "@rdfjs/wrapper" import { AccessControl } from "@/app/lib/class/AccessControl" import { ACP } from "@/app/lib/class/Vocabulary" import { Typed } from "@/app/lib/class/Typed" export class AccessControlResource extends Typed { get accessControl(): Set { - return this.objects(ACP.accessControl, ObjectMapping.as(AccessControl), ObjectMapping.as(AccessControl)) + return this.objects(ACP.accessControl, TermAs.instance(AccessControl), TermFrom.instance) } get resource(): string | undefined { - return this.singularNullable(ACP.resource, ValueMapping.iriToString) + return this.singularNullable(ACP.resource, NamedNodeAs.string) } set resource(v: string) { - this.overwriteNullable(ACP.resource, v, TermMapping.stringToIri) + this.overwriteNullable(ACP.resource, v, NamedNodeFrom.string) } } diff --git a/app/lib/class/AcrDataset.ts b/app/lib/class/AcrDataset.ts index a527d8f..5009eed 100644 --- a/app/lib/class/AcrDataset.ts +++ b/app/lib/class/AcrDataset.ts @@ -1,4 +1,4 @@ -import { DatasetWrapper } from "rdfjs-wrapper" +import { DatasetWrapper } from "@rdfjs/wrapper" import { AccessControlResource } from "@/app/lib/class/AccessControlResource"; import { ACP } from "@/app/lib/class/Vocabulary" diff --git a/app/lib/class/Agent.ts b/app/lib/class/Agent.ts index 844825c..ee21c6b 100644 --- a/app/lib/class/Agent.ts +++ b/app/lib/class/Agent.ts @@ -1,41 +1,41 @@ -import { TermMapping, ValueMapping, TermWrapper, ObjectMapping } from "rdfjs-wrapper" +import { LiteralAs, NamedNodeAs, NamedNodeFrom, TermAs, TermWrapper } from "@rdfjs/wrapper" import { FOAF, PIM, SOLID, VCARD } from "@/app/lib/class/Vocabulary" export class Agent extends TermWrapper { get vcardFn(): string | undefined { - return this.singularNullable(VCARD.fn, ValueMapping.literalToString) + return this.singularNullable(VCARD.fn, LiteralAs.string) } get vcardHasUrl(): string | undefined { - return this.singularNullable(VCARD.hasUrl, ValueMapping.iriToString) + return this.singularNullable(VCARD.hasUrl, NamedNodeAs.string) } get organization(): string | null { - return this.singularNullable(VCARD.organizationName, ValueMapping.iriToString) ?? null + return this.singularNullable(VCARD.organizationName, NamedNodeAs.string) ?? null } get role(): string | null { - return this.singularNullable(VCARD.role, ValueMapping.iriToString) ?? null + return this.singularNullable(VCARD.role, NamedNodeAs.string) ?? null } get title(): string | null { - return this.singularNullable(VCARD.title, ValueMapping.literalToString) ?? null + return this.singularNullable(VCARD.title, LiteralAs.string) ?? null } get phone(): string | null { - return this.hasTelephone?.value ?? null + return this.hasTelephone?.actualValue ?? null } get hasTelephone(): HasValue | undefined { - return this.singularNullable(VCARD.hasTelephone, ObjectMapping.as(HasValue)) + return this.singularNullable(VCARD.hasTelephone, TermAs.instance(HasValue)) } get foafName(): string | undefined { - return this.singularNullable(FOAF.fname, ValueMapping.literalToString) + return this.singularNullable(FOAF.fname, LiteralAs.string) } get name(): string | null { - return this.vcardFn ?? this.foafName ?? this.term.value.split("/").pop()?.split("#")[0] ?? null + return this.vcardFn ?? this.foafName ?? this.value.split("/").pop()?.split("#")[0] ?? null } get storageUrls(): Set { @@ -44,7 +44,7 @@ export class Agent extends TermWrapper { } get foafHomepage(): string | undefined { - return this.singularNullable(FOAF.homepage, ValueMapping.literalToString) + return this.singularNullable(FOAF.homepage, LiteralAs.string) } get website(): string | null { @@ -52,36 +52,36 @@ export class Agent extends TermWrapper { } get photoUrl(): string | null { - return this.singularNullable(VCARD.hasPhoto, ValueMapping.literalToString) ?? null + return this.singularNullable(VCARD.hasPhoto, LiteralAs.string) ?? null } get pimStorage(): Set { - return this.objects(PIM.storage, ValueMapping.iriToString, TermMapping.stringToIri) + return this.objects(PIM.storage, NamedNodeAs.string, NamedNodeFrom.string) } get solidStorage(): Set { - return this.objects(SOLID.storage, ValueMapping.iriToString, TermMapping.stringToIri) + return this.objects(SOLID.storage, NamedNodeAs.string, NamedNodeFrom.string) } get email(): string | null { - return this.hasEmail?.value ?? null + return this.hasEmail?.actualValue ?? null } get hasEmail(): HasValue | undefined { - return this.singularNullable(VCARD.hasEmail, ObjectMapping.as(HasValue)) + return this.singularNullable(VCARD.hasEmail, TermAs.instance(HasValue)) } get knows(): Set { - return this.objects(FOAF.knows, ValueMapping.iriToString, TermMapping.stringToIri) + return this.objects(FOAF.knows, NamedNodeAs.string, NamedNodeFrom.string) } } class HasValue extends TermWrapper { - get value(): string { - return this.hasValue ?? this.term.value + get actualValue(): string { + return this.hasValue ?? this.value } get hasValue(): string | undefined { - return this.singularNullable(VCARD.hasValue, ValueMapping.iriToString) + return this.singularNullable(VCARD.hasValue, NamedNodeAs.string) } } diff --git a/app/lib/class/Container.ts b/app/lib/class/Container.ts index 3931926..dd721e6 100644 --- a/app/lib/class/Container.ts +++ b/app/lib/class/Container.ts @@ -1,9 +1,9 @@ -import { ObjectMapping } from "rdfjs-wrapper" +import { TermAs, TermFrom } from "@rdfjs/wrapper" import { Resource } from "@/app/lib/class/Resource" import { LDP } from "@/app/lib/class/Vocabulary" export class Container extends Resource { public get contains(): Set { - return this.objects(LDP.contains, ObjectMapping.as(Resource), ObjectMapping.as(Resource)) + return this.objects(LDP.contains, TermAs.instance(Resource), TermFrom.instance) } } diff --git a/app/lib/class/ContainerDataset.ts b/app/lib/class/ContainerDataset.ts index da3c2b3..854ca4f 100644 --- a/app/lib/class/ContainerDataset.ts +++ b/app/lib/class/ContainerDataset.ts @@ -1,4 +1,4 @@ -import { DatasetWrapper } from "rdfjs-wrapper" +import { DatasetWrapper } from "@rdfjs/wrapper" import { Container } from "@/app/lib/class/Container" import { LDP } from "@/app/lib/class/Vocabulary" diff --git a/app/lib/class/Matcher.ts b/app/lib/class/Matcher.ts index a76a4ba..4ef0698 100644 --- a/app/lib/class/Matcher.ts +++ b/app/lib/class/Matcher.ts @@ -1,9 +1,9 @@ -import { TermMapping, ValueMapping } from "rdfjs-wrapper" +import { NamedNodeAs, NamedNodeFrom } from "@rdfjs/wrapper" import { ACP } from "@/app/lib/class/Vocabulary" import { Typed } from "@/app/lib/class/Typed" export class Matcher extends Typed { get agent(): Set { - return this.objects(ACP.agent, ValueMapping.iriToString, TermMapping.stringToIri) + return this.objects(ACP.agent, NamedNodeAs.string, NamedNodeFrom.string) } } diff --git a/app/lib/class/Policy.ts b/app/lib/class/Policy.ts index 5efdf0d..330c591 100644 --- a/app/lib/class/Policy.ts +++ b/app/lib/class/Policy.ts @@ -1,14 +1,14 @@ -import { TermMapping, ValueMapping, ObjectMapping } from "rdfjs-wrapper" +import { NamedNodeAs, NamedNodeFrom, TermAs, TermFrom } from "@rdfjs/wrapper" import { Matcher } from "@/app/lib/class/Matcher" import { ACP } from "@/app/lib/class/Vocabulary" import { Typed } from "@/app/lib/class/Typed" export class Policy extends Typed { get allow(): Set { - return this.objects(ACP.allow, ValueMapping.iriToString, TermMapping.stringToIri) + return this.objects(ACP.allow, NamedNodeAs.string, NamedNodeFrom.string) } get anyOf(): Set { - return this.objects(ACP.anyOf, ObjectMapping.as(Matcher), ObjectMapping.as(Matcher)) + return this.objects(ACP.anyOf, TermAs.instance(Matcher), TermFrom.instance) } } diff --git a/app/lib/class/Resource.ts b/app/lib/class/Resource.ts index a24e9ed..8fd1431 100644 --- a/app/lib/class/Resource.ts +++ b/app/lib/class/Resource.ts @@ -1,4 +1,4 @@ -import { TermMapping, ValueMapping, TermWrapper } from "rdfjs-wrapper" +import { LiteralAs, NamedNodeAs, NamedNodeFrom, TermWrapper } from "@rdfjs/wrapper" import { DC, POSIX, RDF, RDFS } from "@/app/lib/class/Vocabulary" import { extractNameFromUrl, FileType } from "@/app/lib/helpers" @@ -6,7 +6,7 @@ export class Resource extends TermWrapper { #ianaMediaTypePattern = /^http:\/\/www\.w3\.org\/ns\/iana\/media-types\/(.+)#Resource$/; get id(): string { - return this.term.value + return this.value } get isContainer(): boolean { @@ -18,11 +18,11 @@ export class Resource extends TermWrapper { } get title(): string | undefined { - return this.singularNullable(DC.title, ValueMapping.literalToString) + return this.singularNullable(DC.title, LiteralAs.string) } get label(): string | undefined { - return this.singularNullable(RDFS.label, ValueMapping.literalToString) + return this.singularNullable(RDFS.label, LiteralAs.string) } get name(): string { @@ -30,11 +30,11 @@ export class Resource extends TermWrapper { } get modified(): Date | undefined { - return this.singularNullable(DC.modified, ValueMapping.literalToDate) + return this.singularNullable(DC.modified, LiteralAs.date) } get mtime(): Date | undefined { - return this.singularNullable(POSIX.mtime, ValueMapping.literalToDate) + return this.singularNullable(POSIX.mtime, LiteralAs.date) } get lastModified(): Date | undefined { @@ -42,11 +42,11 @@ export class Resource extends TermWrapper { } get size(): number | undefined { - return this.singularNullable(POSIX.size, ValueMapping.literalToNumber) + return this.singularNullable(POSIX.size, LiteralAs.number) } get type(): Set { - return this.objects(RDF.type, ValueMapping.iriToString, TermMapping.stringToIri) + return this.objects(RDF.type, NamedNodeAs.string, NamedNodeFrom.string) } get mimeType(): string | undefined { diff --git a/app/lib/class/Typed.ts b/app/lib/class/Typed.ts index bb96736..ad132f2 100644 --- a/app/lib/class/Typed.ts +++ b/app/lib/class/Typed.ts @@ -1,8 +1,8 @@ -import { TermMapping, ValueMapping, TermWrapper } from "rdfjs-wrapper" +import { NamedNodeAs, NamedNodeFrom, TermWrapper } from "@rdfjs/wrapper" import { RDF } from "@/app/lib/class/Vocabulary" export class Typed extends TermWrapper { get type(): Set { - return this.objects(RDF.type, ValueMapping.iriToString, TermMapping.stringToIri) + return this.objects(RDF.type, NamedNodeAs.string, NamedNodeFrom.string) } } diff --git a/app/lib/class/WebIdDataset.ts b/app/lib/class/WebIdDataset.ts index fa60439..36308df 100644 --- a/app/lib/class/WebIdDataset.ts +++ b/app/lib/class/WebIdDataset.ts @@ -1,4 +1,4 @@ -import { DatasetWrapper } from "rdfjs-wrapper" +import { DatasetWrapper } from "@rdfjs/wrapper" import { Agent } from "@/app/lib/class/Agent" import { SOLID } from "@/app/lib/class/Vocabulary" diff --git a/package-lock.json b/package-lock.json index 9045e30..b5be708 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,10 +13,10 @@ "@inrupt/solid-client": "^1.23.1", "@inrupt/solid-client-authn-browser": "^3.1.1", "@ldo/solid-react": "^1.0.0-alpha.33", + "@rdfjs/wrapper": "^0.32.0", "jszip": "^3.10.1", "n3": "^2.0.1", "next": "16.0.7", - "rdfjs-wrapper": "^0.28.0", "react": "19.2.1", "react-dom": "19.2.1", "react-hot-toast": "^2.6.0" @@ -781,7 +781,6 @@ "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", @@ -8041,6 +8040,15 @@ "@types/node": "*" } }, + "node_modules/@rdfjs/wrapper": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@rdfjs/wrapper/-/wrapper-0.32.0.tgz", + "integrity": "sha512-xJdRz/Jk11S9xlqRRBkLWxIxWUuIQqy/BeNvp94m34m1DTEwYMa+wHdznPTEvDEHXRGSFOs1guZ1Z0swW+axcg==", + "license": "MIT", + "engines": { + "node": ">=24.0.0" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -9812,7 +9820,6 @@ "integrity": "sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -9989,7 +9996,6 @@ "integrity": "sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.53.1", "@typescript-eslint/types": "8.53.1", @@ -10537,7 +10543,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -11014,7 +11019,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -11653,8 +11657,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -12246,7 +12249,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -12432,7 +12434,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -14696,7 +14697,6 @@ "integrity": "sha512-KDDuvpfqSK0ZKEO2gCPedNjl5wYpfj+HNiuVRlbhd1A88S3M0ySkdf2V/EJ4NWt5dwh5PXCdcenrKK2IQJAxsg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "accepts": "^1.3.8", "content-disposition": "~0.5.4", @@ -14740,7 +14740,6 @@ "resolved": "https://registry.npmjs.org/ky/-/ky-0.25.1.tgz", "integrity": "sha512-PjpCEWlIU7VpiMVrTwssahkYXX1by6NCT0fhTUX34F3DTinARlgMpriuroolugFPcMgpPWrOW4mTb984Qm1RXA==", "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -16779,15 +16778,6 @@ "entities": "^4.4.0" } }, - "node_modules/rdfjs-wrapper": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/rdfjs-wrapper/-/rdfjs-wrapper-0.28.0.tgz", - "integrity": "sha512-i9aY2RsAO3v+ojW/w2bIL1iFIr/FK5W4NCZQtZvhwDehplz4uyt6i53opdnhk0guZdSGCIrWAmsYIAQ+Etj3iA==", - "license": "MIT", - "engines": { - "node": ">=24.0.0" - } - }, "node_modules/rdfxml-streaming-parser": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-2.4.0.tgz", @@ -16828,7 +16818,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.1.tgz", "integrity": "sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -16838,7 +16827,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.1.tgz", "integrity": "sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -18253,7 +18241,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -18521,7 +18508,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19066,7 +19052,6 @@ "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 71a269f..5b91ce2 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,10 @@ "@inrupt/solid-client": "^1.23.1", "@inrupt/solid-client-authn-browser": "^3.1.1", "@ldo/solid-react": "^1.0.0-alpha.33", + "@rdfjs/wrapper": "^0.32.0", "jszip": "^3.10.1", "n3": "^2.0.1", "next": "16.0.7", - "rdfjs-wrapper": "^0.28.0", "react": "19.2.1", "react-dom": "19.2.1", "react-hot-toast": "^2.6.0"