-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathAgent.ts
More file actions
87 lines (67 loc) · 2.81 KB
/
Agent.ts
File metadata and controls
87 lines (67 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import { LiteralAs, NamedNodeAs, NamedNodeFrom, OptionalFrom, SetFrom, TermAs, TermWrapper } from "@rdfjs/wrapper"
import { FOAF, PIM, SOLID, VCARD } from "../vocabulary/mod.js"
export class Agent extends TermWrapper {
get vcardFn(): string | undefined {
return OptionalFrom.subjectPredicate(this, VCARD.fn, LiteralAs.string)
}
get vcardHasUrl(): string | undefined {
return OptionalFrom.subjectPredicate(this, VCARD.hasUrl, NamedNodeAs.string)
}
get organization(): string | null {
return OptionalFrom.subjectPredicate(this, VCARD.organizationName, NamedNodeAs.string) ?? null
}
get role(): string | null {
return OptionalFrom.subjectPredicate(this, VCARD.role, NamedNodeAs.string) ?? null
}
get title(): string | null {
return OptionalFrom.subjectPredicate(this, VCARD.title, LiteralAs.string) ?? null
}
get phone(): string | null {
return this.hasTelephone?.value ?? null
}
get hasTelephone(): HasValue | undefined {
return OptionalFrom.subjectPredicate(this, VCARD.hasTelephone, TermAs.instance(HasValue))
}
get foafName(): string | undefined {
return OptionalFrom.subjectPredicate(this, FOAF.name, LiteralAs.string)
}
get name(): string | null {
return this.vcardFn ?? this.foafName ?? this.value.split("/").pop()?.split("#")[0] ?? null
}
get storageUrls(): Set<string> {
// TODO: When available - this.pimStorage.union(this.solidStorage)
return new Set([...this.pimStorage, ...this.solidStorage])
}
get foafHomepage(): string | undefined {
return OptionalFrom.subjectPredicate(this, FOAF.homepage, LiteralAs.string)
}
get website(): string | null {
return this.vcardHasUrl ?? this.foafHomepage ?? null
}
get photoUrl(): string | null {
return OptionalFrom.subjectPredicate(this, VCARD.hasPhoto, LiteralAs.string) ?? null
}
get pimStorage(): Set<string> {
return SetFrom.subjectPredicate(this, PIM.storage, NamedNodeAs.string, NamedNodeFrom.string)
}
get solidStorage(): Set<string> {
return SetFrom.subjectPredicate(this, SOLID.storage, NamedNodeAs.string, NamedNodeFrom.string)
}
get email(): string | null {
return this.hasEmail?.value ?? null
}
get hasEmail(): HasValue | undefined {
return OptionalFrom.subjectPredicate(this, VCARD.hasEmail, TermAs.instance(HasValue))
}
get knows(): Set<string> {
return SetFrom.subjectPredicate(this, FOAF.knows, NamedNodeAs.string, NamedNodeFrom.string)
}
}
class HasValue extends TermWrapper {
override get value(): string {
return this.hasValue ?? super.value
}
get hasValue(): string | undefined {
return OptionalFrom.subjectPredicate(this, VCARD.hasValue, NamedNodeAs.string)
}
}