contacts-pane 3.0.2 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -1
- package/dist/contactsPane.js +6487 -763
- package/dist/contactsPane.js.map +1 -1
- package/dist/contactsPane.min.js +2 -0
- package/dist/contactsPane.min.js.map +1 -0
- package/dist/styles/contactsPane.css +602 -0
- package/dist/styles/contactsRDFFormsEnforced.css +513 -0
- package/dist/styles/groupMembership.css +115 -0
- package/dist/styles/individual.css +12 -0
- package/dist/styles/localUtils.css +49 -0
- package/dist/styles/mugshotGallery.css +17 -0
- package/dist/styles/toolsPane.css +43 -0
- package/dist/styles/utilities.css +69 -0
- package/dist/styles/webidControl.css +90 -0
- package/package.json +23 -17
- package/dist/autocompleteBar.d.ts +0 -3
- package/dist/autocompleteBar.d.ts.map +0 -1
- package/dist/autocompleteBar.js +0 -90
- package/dist/autocompleteBar.js.map +0 -1
- package/dist/autocompleteField.d.ts +0 -20
- package/dist/autocompleteField.d.ts.map +0 -1
- package/dist/autocompleteField.js +0 -165
- package/dist/autocompleteField.js.map +0 -1
- package/dist/autocompletePicker.d.ts +0 -15
- package/dist/autocompletePicker.d.ts.map +0 -1
- package/dist/autocompletePicker.js +0 -253
- package/dist/autocompletePicker.js.map +0 -1
- package/dist/contactLogic.js +0 -223
- package/dist/contactLogic.js.map +0 -1
- package/dist/groupMembershipControl.js +0 -107
- package/dist/groupMembershipControl.js.map +0 -1
- package/dist/individual.js +0 -115
- package/dist/individual.js.map +0 -1
- package/dist/mintNewAddressBook.js +0 -145
- package/dist/mintNewAddressBook.js.map +0 -1
- package/dist/mugshotGallery.js +0 -264
- package/dist/mugshotGallery.js.map +0 -1
- package/dist/publicData.d.ts +0 -82
- package/dist/publicData.d.ts.map +0 -1
- package/dist/publicData.js +0 -421
- package/dist/publicData.js.map +0 -1
- package/dist/toolsPane.js +0 -671
- package/dist/toolsPane.js.map +0 -1
- package/dist/webidControl.js +0 -320
- package/dist/webidControl.js.map +0 -1
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.groupMembership = groupMembership;
|
|
7
|
-
exports.renderGroupMemberships = renderGroupMemberships;
|
|
8
|
-
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
9
|
-
var _solidLogic = require("solid-logic");
|
|
10
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
|
-
// Render a control to record the group memberships we have for this agent
|
|
12
|
-
|
|
13
|
-
const ns = UI.ns;
|
|
14
|
-
// const buttons = UI.buttonsn no
|
|
15
|
-
// const widgets = UI.widgets
|
|
16
|
-
const utils = UI.utils;
|
|
17
|
-
// const style = UI.style
|
|
18
|
-
const kb = _solidLogic.store;
|
|
19
|
-
|
|
20
|
-
// Groups the person is a member of
|
|
21
|
-
function groupMembership(person) {
|
|
22
|
-
let groups = kb.statementsMatching(null, ns.owl('sameAs'), person).map(st => st.why).concat(kb.each(null, ns.vcard('hasMember'), person));
|
|
23
|
-
const strings = new Set(groups.map(group => group.uri)); // remove dups
|
|
24
|
-
groups = [...strings].map(uri => kb.sym(uri));
|
|
25
|
-
return groups;
|
|
26
|
-
}
|
|
27
|
-
async function renderGroupMemberships(person, context) {
|
|
28
|
-
// Remove a person from a group
|
|
29
|
-
async function removeFromGroup(thing, group) {
|
|
30
|
-
const pname = kb.any(thing, ns.vcard('fn'));
|
|
31
|
-
const gname = kb.any(group, ns.vcard('fn'));
|
|
32
|
-
// find all WebIDs of thing
|
|
33
|
-
const thingwebids = kb.each(null, ns.owl('sameAs'), thing, group.doc());
|
|
34
|
-
// WebID can be deleted only if not used in another thing
|
|
35
|
-
let webids = [];
|
|
36
|
-
thingwebids.forEach(webid => {
|
|
37
|
-
if (kb.statementsMatching(webid, ns.owl('sameAs'), thing, group.doc())) webids = webids.concat(webid);
|
|
38
|
-
});
|
|
39
|
-
let thingOrWebid = thing;
|
|
40
|
-
if (webids.length > 0) thingOrWebid = webids[0];
|
|
41
|
-
const groups = kb.each(null, ns.vcard('hasMember'), thingOrWebid); // in all groups a person has same structure
|
|
42
|
-
if (groups.length < 2) {
|
|
43
|
-
alert('Must be a member of at least one group. Add to another group first.');
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
const message = 'Remove ' + pname + ' from group ' + gname + '?';
|
|
47
|
-
if (confirm(message)) {
|
|
48
|
-
let del = kb.statementsMatching(person, undefined, undefined, group.doc()).concat(kb.statementsMatching(undefined, undefined, person, group.doc()));
|
|
49
|
-
webids.forEach(webid => {
|
|
50
|
-
if (kb.statementsMatching(webid, ns.owl('sameAs'), undefined, group.doc()).length < 2) {
|
|
51
|
-
del = del.concat(kb.statementsMatching(undefined, undefined, webid, group.doc()));
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
kb.updater.update(del, [], function (uri, ok, err) {
|
|
55
|
-
if (!ok) {
|
|
56
|
-
const message = 'Error removing member from group ' + group + ': ' + err;
|
|
57
|
-
groupList.parentNode.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'));
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
console.log('Removed ' + pname + ' from group ' + gname);
|
|
61
|
-
// to allow refresh of card groupList
|
|
62
|
-
kb.fetcher.unload(group.doc());
|
|
63
|
-
await kb.fetcher.load(group.doc());
|
|
64
|
-
syncGroupList();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
function newRowForGroup(group) {
|
|
68
|
-
const options = {
|
|
69
|
-
deleteFunction: function () {
|
|
70
|
-
removeFromGroup(person, group);
|
|
71
|
-
},
|
|
72
|
-
noun: 'membership'
|
|
73
|
-
};
|
|
74
|
-
const tr = UI.widgets.personTR(dom, null, group, options);
|
|
75
|
-
return tr;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// find all groups where person has membership
|
|
79
|
-
function syncGroupList() {
|
|
80
|
-
// person and/or WebIDs to be changed
|
|
81
|
-
utils.syncTableToArray(groupList, groupMembership(person), newRowForGroup);
|
|
82
|
-
}
|
|
83
|
-
async function loadGroupsFromBook(book = null) {
|
|
84
|
-
if (!book) {
|
|
85
|
-
book = kb.any(undefined, ns.vcard('includesGroup'));
|
|
86
|
-
if (!book) {
|
|
87
|
-
// throw new Error('findBookFromGroups: Cant find address book which this group is part of')
|
|
88
|
-
return; // no book => no groups
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
const groupIndex = kb.any(book, ns.vcard('groupIndex'));
|
|
92
|
-
const gs = book ? kb.each(book, ns.vcard('includesGroup'), null, groupIndex) : [];
|
|
93
|
-
await kb.fetcher.load(gs);
|
|
94
|
-
}
|
|
95
|
-
const {
|
|
96
|
-
dom
|
|
97
|
-
} = context;
|
|
98
|
-
const kb = context.session.store;
|
|
99
|
-
const groupList = dom.createElement('table');
|
|
100
|
-
|
|
101
|
-
// find book any group and load all groups
|
|
102
|
-
await loadGroupsFromBook();
|
|
103
|
-
groupList.refresh = syncGroupList;
|
|
104
|
-
syncGroupList();
|
|
105
|
-
return groupList;
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=groupMembershipControl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"groupMembershipControl.js","names":["UI","_interopRequireWildcard","require","_solidLogic","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ns","utils","kb","store","groupMembership","person","groups","statementsMatching","owl","map","st","why","concat","each","vcard","strings","Set","group","uri","sym","renderGroupMemberships","context","removeFromGroup","thing","pname","any","gname","thingwebids","doc","webids","forEach","webid","thingOrWebid","length","alert","message","confirm","del","undefined","updater","update","ok","err","groupList","parentNode","appendChild","widgets","errorMessageBlock","dom","console","log","fetcher","unload","load","syncGroupList","newRowForGroup","options","deleteFunction","noun","tr","personTR","syncTableToArray","loadGroupsFromBook","book","groupIndex","gs","session","createElement","refresh"],"sources":["../src/groupMembershipControl.js"],"sourcesContent":["// Render a control to record the group memberships we have for this agent\nimport * as UI from 'solid-ui'\nimport { store } from 'solid-logic'\n\nconst ns = UI.ns\n// const buttons = UI.buttonsn no\n// const widgets = UI.widgets\nconst utils = UI.utils\n// const style = UI.style\nconst kb = store\n\n// Groups the person is a member of\nexport function groupMembership (person) {\n let groups = kb.statementsMatching(null, ns.owl('sameAs'), person).map(st => st.why)\n .concat(kb.each(null, ns.vcard('hasMember'), person))\n const strings = new Set(groups.map(group => group.uri)) // remove dups\n groups = [...strings].map(uri => kb.sym(uri))\n return groups\n}\n\nexport async function renderGroupMemberships (person, context) {\n // Remove a person from a group\n async function removeFromGroup (thing, group) {\n const pname = kb.any(thing, ns.vcard('fn'))\n const gname = kb.any(group, ns.vcard('fn'))\n // find all WebIDs of thing\n const thingwebids = kb.each(null, ns.owl('sameAs'), thing, group.doc())\n // WebID can be deleted only if not used in another thing\n let webids = []\n thingwebids.forEach(webid => {\n if (kb.statementsMatching(webid, ns.owl('sameAs'), thing, group.doc())) webids = webids.concat(webid)\n })\n let thingOrWebid = thing\n if (webids.length > 0) thingOrWebid = webids[0]\n const groups = kb.each(null, ns.vcard('hasMember'), thingOrWebid) // in all groups a person has same structure\n if (groups.length < 2) {\n alert(\n 'Must be a member of at least one group. Add to another group first.'\n )\n return\n }\n const message = 'Remove ' + pname + ' from group ' + gname + '?'\n if (confirm(message)) {\n let del = kb\n .statementsMatching(person, undefined, undefined, group.doc())\n .concat(kb.statementsMatching(undefined, undefined, person, group.doc()))\n webids.forEach(webid => {\n if (kb.statementsMatching(webid, ns.owl('sameAs'), undefined, group.doc()).length < 2) {\n del = del.concat(kb.statementsMatching(undefined, undefined, webid, group.doc()))\n }\n })\n kb.updater.update(del, [], function (uri, ok, err) {\n if (!ok) {\n const message = 'Error removing member from group ' + group + ': ' + err\n groupList.parentNode.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'))\n }\n })\n console.log('Removed ' + pname + ' from group ' + gname)\n // to allow refresh of card groupList\n kb.fetcher.unload(group.doc())\n await kb.fetcher.load(group.doc())\n syncGroupList()\n }\n }\n\n function newRowForGroup (group) {\n const options = {\n deleteFunction: function () {\n removeFromGroup(person, group)\n },\n noun: 'membership'\n }\n const tr = UI.widgets.personTR(dom, null, group, options)\n return tr\n }\n\n // find all groups where person has membership\n function syncGroupList () {\n // person and/or WebIDs to be changed\n utils.syncTableToArray(groupList, groupMembership(person), newRowForGroup)\n }\n\n async function loadGroupsFromBook (book = null) {\n if (!book) {\n book = kb.any(undefined, ns.vcard('includesGroup'))\n if (!book) {\n // throw new Error('findBookFromGroups: Cant find address book which this group is part of')\n return // no book => no groups\n }\n }\n const groupIndex = kb.any(book, ns.vcard('groupIndex'))\n const gs = book ? kb.each(book, ns.vcard('includesGroup'), null, groupIndex) : []\n await kb.fetcher.load(gs)\n }\n\n const { dom } = context\n const kb = context.session.store\n const groupList = dom.createElement('table')\n\n // find book any group and load all groups\n await loadGroupsFromBook()\n\n groupList.refresh = syncGroupList\n syncGroupList()\n return groupList\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/individual.js
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.loadTurtleText = loadTurtleText;
|
|
7
|
-
exports.renderIndividual = renderIndividual;
|
|
8
|
-
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
9
|
-
var _solidLogic = require("solid-logic");
|
|
10
|
-
var _mugshotGallery = require("./mugshotGallery");
|
|
11
|
-
var _webidControl = require("./webidControl");
|
|
12
|
-
var _groupMembershipControl = require("./groupMembershipControl");
|
|
13
|
-
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
14
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
15
|
-
/* babel-plugin-inline-import './ontology/forms.ttl' */
|
|
16
|
-
const textOfForms = "# This turtle file defined the forms usied in the contacts management\n#\n# Indivduals and orgs are in one file as they both\n# share some forms (address etc) and also interact (roles)\n\n# Now hand-edited, was originally made using form editor.\n# Forms documentaion: https://solid.github.io/solid-ui/Documentation/forms-intro.html\n\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix dct: <http://purl.org/dc/terms/>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix prov: <http://www.w3.org/ns/prov#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix : <#>.\n\n# Ontology additions or interpretations needed for the form to work well\n\n# The ontology file doesn't make them disjoint. This makes the selector be a choice.\nvcard:TelephoneType owl:disjointUnionOf ( vcard:Cell vcard:Home vcard:Work) .\nvcard:Type owl:disjointUnionOf (vcard:Home vcard:Work) . # for email\n\n# Better field labels\nvcard:Cell ui:label \"mobile\"@en . # app will imake nitial caps if nec\nvcard:hasAddress ui:label \"address\"@en .\nvcard:bday ui:label \"born\"@en.\nvcard:hasEmail ui:label \"email\"@en .\nvcard:hasTelephone ui:label \"phone\"@en .\nvcard:note ui:label \"notes\"@en .\n\n\n\n# Ontology data to drive a top classifier\n\nfoaf:Agent owl:disjointUnionOf (\n vcard:Individual\n # @@ schema:robot @@ schem:SoftwareApplication, n0:Agent, n0:Person,\n prov:SoftwareAgent\n # vcard:Group a group of agents is not (currently) an agent itself.\n # You can't get a decision out of it so it can't own a bank account\n vcard:Organization\n).\n\n\n# Ontology data to drive the classifier\n\nsolid:InterestingOrganization owl:disjointUnionOf (\n# Airline - a Corpration\n# Consortium - a Corporation or a NGO\n schema:Corporation\n schema:EducationalOrganization\n schema:ResearchOrganization\n# FundingScheme - eh?\n schema:GovernmentOrganization\n# LibrarySystem\n# LocalBusiness - Corporation\n schema:MedicalOrganization\n schema:NGO\n # NewsMediaOrganization - a Corporation or a NGO\n schema:MusicGroup # e.g. a band\n schema:Project # like Solid\n schema:SportsOrganization # a Team\n ) .\n\n#########################################################\n# The forms themselves\n\nfoaf:Agent ui:creationForm :AgentForm .\n\n:AgentForm a ui:Form; schema:name \"Form for editing a agent\" ;\n ui:parts ( :AgentClassifier :AgentOptions ) .\n\n :AgentClassifier a ui:Classifier; ui:label \"What sort of agent?\"@en;\n ui:category foaf:Agent .\n\n:AgentOptions a ui:Options; ui:dependingon rdf:type;\n ui:case [ ui:for vcard:Individual; ui:use :form1 ],\n [ ui:for vcard:Organization; ui:use :orgDetailsForm ],\n [ ui:for prov:SoftwareAgent; ui:use :robotDetailsForm ] .\n\n# Robots\n\n:robotDetailsForm a ui:Form; ui:parts ( ) . # @@@@\n\n# Individual-specific form\n\nvcard:Individual\n ui:creationForm :form1 .\n\n# The addressComment, etc., fields with a comment before each type of field\n# were originally partly because the labels on the fields were clumsy like \"hasAddress\".\n# This is fixed by adding the ui:label to the properties above, so let's try\n# removing the little micro-headings\n\n# For org:\n:orgDetailsForm a ui:Form ; dct:title \"Contact details for an organozation\";\n ui:parts (\n :OrgClassifier\n\n :fullNameField\n :addresses\n :eMails\n :telephones\n :noteField ) .\n# For individual:\n:form1\n dct:title \"Contact Details for a person\" ;\n a ui:Form ;\n ui:part\n :fullNameField, :roleField, :orgNameField,\n # :addressesComment,\n :addresses,\n # :emailComment,\n :eMails,\n# :telephoneComment,\n :telephones,\n# :noteComment,\n :noteField ;\n ui:parts (\n :fullNameField :roleField :orgNameField\n # :addressesComment\n :addresses\n # :emailComment\n :eMails\n # :telephoneComment\n :telephones :birthdayField\n # :noteComment\n :noteField ) .\n\n :fullNameField\n a ui:SingleLineTextField ;\n ui:label \"Name\";\n ui:maxLength \"128\" ;\n ui:property vcard:fn ;\n ui:size \"40\" .\n\n :roleField\n a ui:SingleLineTextField ;\n ui:suppressEmptyUneditable true;\n ui:maxLength \"128\" ;\n ui:property vcard:role ;\n ui:size \"40\" .\n\n :orgNameField\n a ui:SingleLineTextField ;\n ui:suppressEmptyUneditable true;\n ui:maxLength \"128\" ;\n ui:property vcard:organization-name ;\n ui:size \"40\" .\n\n\n:addressesComment\n a ui:Comment ;\n ui:suppressIfUneditable true;\n ui:contents \"Address\" .\n\n\n:addresses\n dct:title \"Address details\" ;\n a ui:Multiple ;\n ui:part :oneAddress ;\n ui:property vcard:hasAddress .\n\n:oneAddress\n a ui:Group ;\n ui:parts ( :id1409437207443 :id1409437292400 :id1409437421996 :id1409437467649 :id1409437569420 ). # :id1409437646712\n\n:id1409437207443\n a ui:SingleLineTextField ;\n ui:maxLength \"128\" ;\n ui:property vcard:street-address ;\n ui:size \"40\" .\n\n:id1409437292400\n a ui:SingleLineTextField ;\n ui:maxLength \"128\" ;\n ui:property vcard:locality ;\n ui:size \"40\" .\n\n:id1409437421996\n a ui:SingleLineTextField ;\n ui:maxLength \"25\" ;\n ui:property vcard:postal-code ;\n ui:size \"25\" .\n\n:id1409437467649\n a ui:SingleLineTextField ;\n ui:maxLength \"128\" ;\n ui:property vcard:region ;\n ui:size \"40\" .\n\n:id1409437569420\n a ui:SingleLineTextField ;\n ui:maxLength \"128\" ;\n ui:property vcard:country-name ;\n ui:size \"40\" .\n\n:id1409437646712\n a ui:Classifier ;\n ui:from rdf:Class ;\n ui:property rdf:type .\n\n\n##############################\n\n:emailComment\n a ui:Comment ;\n ui:suppressIfUneditable true;\n\n ui:contents \"Email\" .\n\n\n:eMails\n a ui:Multiple ;\n ui:part :oneEMail ;\n ui:property vcard:hasEmail .\n\n:oneEMail\n a ui:Group ; # hint: side by side is good\n ui:part :emailValue, :emailType ;\n ui:parts ( :emailType :emailValue ).\n\n:emailValue\n a ui:EmailField ; ui:label \"email\";\n ui:property vcard:value ;\n ui:size \"50\" .\n\n:emailType\n a ui:Classifier ;\n ui:canMintNew \"0\" ;\n ui:category vcard:Type ;\n ui:from vcard:Type ;\n ui:property rdf:type .\n\n\n##############################\n\n:telephoneComment\n a ui:Comment ;\n ui:suppressIfUneditable true;\n ui:contents \"Phones\" .\n\n\n:telephones\n a ui:Multiple ;\n ui:part :onetelephone ;\n ui:property vcard:hasTelephone .\n\n:onetelephone\n a ui:Group ;\n ui:part :telephoneValue, :telephoneType ;\n ui:parts ( :telephoneType :telephoneValue ).\n\n:telephoneValue\n a ui:PhoneField ;\n ui:property vcard:value ;\n ui:size \"50\" .\n\n:telephoneType\n a ui:Classifier ;\n ui:canMintNew \"0\" ;\n ui:category vcard:TelephoneType ;\n ui:from vcard:Type ;\n ui:property rdf:type .\n\n##############################\n\n:birthdayField\n a ui:DateField;\n ui:label \"Born\";\n ui:suppressEmptyUneditable true;\n ui:property vcard:bday .\n\n##############################\n\n:noteComment\n a ui:Comment ;\n ui:suppressIfUneditable true;\n ui:contents \"General Notes\" .\n\n:noteField\n a ui:MultiLineTextField ;\n ui:suppressEmptyUneditable true;\n\n ui:property vcard:note .\n\n\n############ organization forms\n\n:OrganinizatioCreationForm a ui:Form; schema:name \"Form for editing contact details of an organization\" ;\n ui:parts ( :OrgClassifier :homePageURIField ) .\n\n\n:OrgClassifier a ui:Classifier; ui:label \"What sort of organization?\"@en;\n ui:category solid:InterestingOrganization .\n\n\n:instituteNameField\n a ui:SingleLineTextField ;\n ui:label \"Intitute Name\";\n ui:maxLength \"200\" ;\n ui:property schema:name ;\n ui:size \"80\" .\n\n :homePageURIField a ui:NamedNodeURIField;\n ui:property schema:url . # @@ ??\n\n :initituteTypeField a ui:Classifier;\n ui:label \"What sort of organization\";\n ui:category solid:InterestingOrganization .\n";
|
|
17
|
-
/* babel-plugin-inline-import './ontology/vcard.ttl' */
|
|
18
|
-
const VCARD_ONTOLOGY_TEXT = "@prefix : <http://www.w3.org/2006/vcard/ns#> .\n@prefix owl: <http://www.w3.org/2002/07/owl#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n@prefix xml: <http://www.w3.org/XML/1998/namespace> .\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\n\n:Acquaintance a owl:Class ;\n rdfs:label \"Acquaintance\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Agent a owl:Class ;\n rdfs:label \"Agent\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:BBS a owl:Class ;\n rdfs:label \"BBS\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType ;\n owl:deprecated true .\n\n:Car a owl:Class ;\n rdfs:label \"Car\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType ;\n owl:deprecated true .\n\n:Cell a owl:Class ;\n rdfs:label \"Cell\"@en ;\n rdfs:comment \"Also called mobile telephone\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType .\n\n:Child a owl:Class ;\n rdfs:label \"Child\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Colleague a owl:Class ;\n rdfs:label \"Colleague\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Contact a owl:Class ;\n rdfs:label \"Contact\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Coresident a owl:Class ;\n rdfs:label \"Coresident\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Coworker a owl:Class ;\n rdfs:label \"Coworker\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Crush a owl:Class ;\n rdfs:label \"Crush\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Date a owl:Class ;\n rdfs:label \"Date\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Dom a owl:Class ;\n rdfs:label \"Dom\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type ;\n owl:deprecated true .\n\n:Emergency a owl:Class ;\n rdfs:label \"Emergency\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Fax a owl:Class ;\n rdfs:label \"Fax\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType .\n\n:Female a owl:Class ;\n rdfs:label \"Female\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Gender .\n\n:Friend a owl:Class ;\n rdfs:label \"Friend\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Home a owl:Class ;\n rdfs:label \"Home\"@en ;\n rdfs:comment \"This implies that the property is related to an individual's personal life\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type .\n\n:ISDN a owl:Class ;\n rdfs:label \"ISDN\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type ;\n owl:deprecated true .\n\n:Internet a owl:Class ;\n rdfs:label \"Internet\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type ;\n owl:deprecated true .\n\n:Intl a owl:Class ;\n rdfs:label \"Intl\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type ;\n owl:deprecated true .\n\n:Kin a owl:Class ;\n rdfs:label \"Kin\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Label a owl:Class ;\n rdfs:label \"Label\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type ;\n owl:deprecated true .\n\n:Male a owl:Class ;\n rdfs:label \"Male\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Gender .\n\n:Me a owl:Class ;\n rdfs:label \"Me\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Met a owl:Class ;\n rdfs:label \"Met\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Modem a owl:Class ;\n rdfs:label \"Modem\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType ;\n owl:deprecated true .\n\n:Msg a owl:Class ;\n rdfs:label \"Msg\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType ;\n owl:deprecated true .\n\n:Muse a owl:Class ;\n rdfs:label \"Muse\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Neighbor a owl:Class ;\n rdfs:label \"Neighbor\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:None a owl:Class ;\n rdfs:label \"None\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Gender .\n\n:Other a owl:Class ;\n rdfs:label \"Other\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Gender .\n\n:PCS a owl:Class ;\n rdfs:label \"PCS\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType ;\n owl:deprecated true .\n\n:Pager a owl:Class ;\n rdfs:label \"Pager\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType .\n\n:Parcel a owl:Class ;\n rdfs:label \"Parcel\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type ;\n owl:deprecated true .\n\n:Parent a owl:Class ;\n rdfs:label \"Parent\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Postal a owl:Class ;\n rdfs:label \"Postal\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type ;\n owl:deprecated true .\n\n:Pref a owl:Class ;\n rdfs:label \"Pref\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type ;\n owl:deprecated true .\n\n:Sibling a owl:Class ;\n rdfs:label \"Sibling\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Spouse a owl:Class ;\n rdfs:label \"Spouse\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Sweetheart a owl:Class ;\n rdfs:label \"Sweetheart\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :RelatedType .\n\n:Tel a owl:Class ;\n rdfs:label \"Tel\"@en ;\n rdfs:comment \"This class is deprecated. Use the hasTelephone object property.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:deprecated true .\n\n:Text a owl:Class ;\n rdfs:label \"Text\"@en ;\n rdfs:comment \"Also called sms telephone\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType .\n\n:TextPhone a owl:Class ;\n rdfs:label \"Text phone\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType .\n\n:Unknown a owl:Class ;\n rdfs:label \"Unknown\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Gender .\n\n:Video a owl:Class ;\n rdfs:label \"Video\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType .\n\n:Voice a owl:Class ;\n rdfs:label \"Voice\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :TelephoneType .\n\n:Work a owl:Class ;\n rdfs:label \"Work\"@en ;\n rdfs:comment \"This implies that the property is related to an individual's work place\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type .\n\n:X400 a owl:Class ;\n rdfs:label \"X400\"@en ;\n rdfs:comment \"This class is deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Type ;\n owl:deprecated true .\n\n:adr a owl:ObjectProperty ;\n rdfs:label \"address\"@en ;\n rdfs:comment \"This object property has been mapped\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :hasAddress .\n\n:agent a owl:ObjectProperty ;\n rdfs:label \"agent\"@en ;\n rdfs:comment \"This object property has been deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:deprecated true .\n\n:anniversary a owl:DatatypeProperty ;\n rdfs:label \"anniversary\"@en ;\n rdfs:comment \"The date of marriage, or equivalent, of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range [ a rdfs:Datatype ;\n owl:unionOf ( xsd:dateTime xsd:gYear ) ] .\n\n:bday a owl:DatatypeProperty ;\n rdfs:label \"birth date\"@en ;\n rdfs:comment \"To specify the birth date of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range [ a rdfs:Datatype ;\n owl:unionOf ( xsd:dateTime xsd:dateTimeStamp xsd:gYear ) ] .\n\n:category a owl:DatatypeProperty ;\n rdfs:label \"category\"@en ;\n rdfs:comment \"The category information about the object, also known as tags\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:class a owl:DatatypeProperty ;\n rdfs:label \"class\"@en ;\n rdfs:comment \"This data property has been deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:deprecated true .\n\n:email a owl:ObjectProperty ;\n rdfs:label \"email\"@en ;\n rdfs:comment \"This object property has been mapped\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :hasEmail .\n\n:extended-address a owl:DatatypeProperty ;\n rdfs:label \"extended address\"@en ;\n rdfs:comment \"This data property has been deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:deprecated true .\n\n:geo a owl:ObjectProperty ;\n rdfs:label \"geo\"@en ;\n rdfs:comment \"This object property has been mapped\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :hasGeo .\n\n:hasAdditionalName a owl:ObjectProperty ;\n rdfs:label \"has additional name\"@en ;\n rdfs:comment \"Used to support property parameters for the additional name data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasCalendarBusy a owl:ObjectProperty ;\n rdfs:label \"has calendar busy\"@en ;\n rdfs:comment \"To specify the busy time associated with the object. (Was called FBURL in RFC6350)\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasCalendarLink a owl:ObjectProperty ;\n rdfs:label \"has calendar link\"@en ;\n rdfs:comment \"To specify the calendar associated with the object. (Was called CALURI in RFC6350)\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasCalendarRequest a owl:ObjectProperty ;\n rdfs:label \"has calendar request\"@en ;\n rdfs:comment \"To specify the calendar user address to which a scheduling request be sent for the object. (Was called CALADRURI in RFC6350)\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasCategory a owl:ObjectProperty ;\n rdfs:label \"has category\"@en ;\n rdfs:comment \"Used to support property parameters for the category data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasCountryName a owl:ObjectProperty ;\n rdfs:label \"has country name\"@en ;\n rdfs:comment \"Used to support property parameters for the country name data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasFN a owl:ObjectProperty ;\n rdfs:label \"has formatted name\"@en ;\n rdfs:comment \"Used to support property parameters for the formatted name data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasFamilyName a owl:ObjectProperty ;\n rdfs:label \"has family name\"@en ;\n rdfs:comment \"Used to support property parameters for the family name data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasGender a owl:ObjectProperty ;\n rdfs:label \"has gender\"@en ;\n rdfs:comment \"To specify the sex or gender identity of the object. URIs are recommended to enable interoperable sex and gender codes to be used.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasGivenName a owl:ObjectProperty ;\n rdfs:label \"has given name\"@en ;\n rdfs:comment \"Used to support property parameters for the given name data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasHonorificPrefix a owl:ObjectProperty ;\n rdfs:label \"has honorific prefix\"@en ;\n rdfs:comment \"Used to support property parameters for the honorific prefix data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasHonorificSuffix a owl:ObjectProperty ;\n rdfs:label \"has honorific suffix\"@en ;\n rdfs:comment \"Used to support property parameters for the honorific suffix data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasInstantMessage a owl:ObjectProperty ;\n rdfs:label \"has messaging\"@en ;\n rdfs:comment \"To specify the instant messaging and presence protocol communications with the object. (Was called IMPP in RFC6350)\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasLanguage a owl:ObjectProperty ;\n rdfs:label \"has language\"@en ;\n rdfs:comment \"Used to support property parameters for the language data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasLocality a owl:ObjectProperty ;\n rdfs:label \"has locality\"@en ;\n rdfs:comment \"Used to support property parameters for the locality data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasNickname a owl:ObjectProperty ;\n rdfs:label \"has nickname\"@en ;\n rdfs:comment \"Used to support property parameters for the nickname data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:seeAlso :nickname .\n\n:hasNote a owl:ObjectProperty ;\n rdfs:label \"has note\"@en ;\n rdfs:comment \"Used to support property parameters for the note data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasOrganizationName a owl:ObjectProperty ;\n rdfs:label \"has organization name\"@en ;\n rdfs:comment \"Used to support property parameters for the organization name data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasOrganizationUnit a owl:ObjectProperty ;\n rdfs:label \"has organization unit name\"@en ;\n rdfs:comment \"Used to support property parameters for the organization unit name data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasPostalCode a owl:ObjectProperty ;\n rdfs:label \"has postal code\"@en ;\n rdfs:comment \"Used to support property parameters for the postal code data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasRegion a owl:ObjectProperty ;\n rdfs:label \"has region\"@en ;\n rdfs:comment \"Used to support property parameters for the region data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasRelated a owl:ObjectProperty ;\n rdfs:label \"has related\"@en ;\n rdfs:comment \"To specify a relationship between another entity and the entity represented by this object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasRole a owl:ObjectProperty ;\n rdfs:label \"has role\"@en ;\n rdfs:comment \"Used to support property parameters for the role data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasSource a owl:ObjectProperty ;\n rdfs:label \"has source\"@en ;\n rdfs:comment \"To identify the source of directory information of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasStreetAddress a owl:ObjectProperty ;\n rdfs:label \"has street address\"@en ;\n rdfs:comment \"Used to support property parameters for the street address data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasTitle a owl:ObjectProperty ;\n rdfs:label \"has title\"@en ;\n rdfs:comment \"Used to support property parameters for the title data property\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasUID a owl:ObjectProperty ;\n rdfs:label \"has uid\"@en ;\n rdfs:comment \"To specify a value that represents a globally unique identifier corresponding to the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasValue a owl:ObjectProperty ;\n rdfs:label \"has value\"@en ;\n rdfs:comment \"Used to indicate the resource value of an object property that requires property parameters\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:label a owl:DatatypeProperty ;\n rdfs:label \"label\"@en ;\n rdfs:comment \"This data property has been deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:deprecated true .\n\n:language a owl:DatatypeProperty ;\n rdfs:label \"language\"@en ;\n rdfs:comment \"To specify the language that may be used for contacting the object. May also be used as a property parameter.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:latitude a owl:DatatypeProperty ;\n rdfs:label \"latitude\"@en ;\n rdfs:comment \"This data property has been deprecated. See hasGeo\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:deprecated true .\n\n:longitude a owl:DatatypeProperty ;\n rdfs:label \"longitude\"@en ;\n rdfs:comment \"This data property has been deprecated. See hasGeo\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:deprecated true .\n\n:mailer a owl:DatatypeProperty ;\n rdfs:label \"mailer\"@en ;\n rdfs:comment \"This data property has been deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:deprecated true .\n\n:note a owl:DatatypeProperty ;\n rdfs:label \"note\"@en ;\n rdfs:comment \"A note associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:org a owl:ObjectProperty ;\n rdfs:label \"organization\"@en ;\n rdfs:comment \"This object property has been mapped. Use the organization-name data property.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :organization-name .\n\n:organization-unit a owl:DatatypeProperty ;\n rdfs:label \"organizational unit name\"@en ;\n rdfs:comment \"To specify the organizational unit name associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string ;\n rdfs:subPropertyOf :organization-name .\n\n:post-office-box a owl:DatatypeProperty ;\n rdfs:label \"post office box\"@en ;\n rdfs:comment \"This data property has been deprecated\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:deprecated true .\n\n:prodid a owl:DatatypeProperty ;\n rdfs:label \"product id\"@en ;\n rdfs:comment \"To specify the identifier for the product that created the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:rev a owl:DatatypeProperty ;\n rdfs:label \"revision\"@en ;\n rdfs:comment \"To specify revision information about the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:dateTime .\n\n:role a owl:DatatypeProperty ;\n rdfs:label \"role\"@en ;\n rdfs:comment \"To specify the function or part played in a particular situation by the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:sort-string a owl:DatatypeProperty ;\n rdfs:label \"sort as\"@en ;\n rdfs:comment \"To specify the string to be used for national-language-specific sorting. Used as a property parameter only.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:title a owl:DatatypeProperty ;\n rdfs:label \"title\"@en ;\n rdfs:comment \"To specify the position or job of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:tz a owl:DatatypeProperty ;\n rdfs:label \"time zone\"@en ;\n rdfs:comment \"To indicate time zone information that is specific to the object. May also be used as a property parameter.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:value a owl:DatatypeProperty ;\n rdfs:label \"value\"@en ;\n rdfs:comment \"Used to indicate the literal value of a data property that requires property parameters\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:Address a owl:Class ;\n rdfs:label \"Address\"@en ;\n rdfs:comment \"To specify the components of the delivery address for the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentClass [ a owl:Class ;\n owl:unionOf ( [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :country-name ;\n owl:someValuesFrom xsd:string ] [ a owl:Restriction ;\n owl:maxCardinality \"1\"^^xsd:nonNegativeInteger ;\n owl:onProperty :country-name ] ) ] [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :locality ;\n owl:someValuesFrom xsd:string ] [ a owl:Restriction ;\n owl:maxCardinality \"1\"^^xsd:nonNegativeInteger ;\n owl:onProperty :locality ] ) ] [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :postal-code ;\n owl:someValuesFrom xsd:string ] [ a owl:Restriction ;\n owl:maxCardinality \"1\"^^xsd:nonNegativeInteger ;\n owl:onProperty :postal-code ] ) ] [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :region ;\n owl:someValuesFrom xsd:string ] [ a owl:Restriction ;\n owl:maxCardinality \"1\"^^xsd:nonNegativeInteger ;\n owl:onProperty :region ] ) ] [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :street-address ;\n owl:someValuesFrom xsd:string ] [ a owl:Restriction ;\n owl:maxCardinality \"1\"^^xsd:nonNegativeInteger ;\n owl:onProperty :street-address ] ) ] ) ] .\n\n:Email a owl:Class ;\n rdfs:label \"Email\"@en ;\n rdfs:comment \"To specify the electronic mail address for communication with the object the vCard represents. Use the hasEmail object property.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:deprecated true .\n\n:Group a owl:Class ;\n rdfs:label \"Group\"@en ;\n rdfs:comment \"Object representing a group of persons or entities. A group object will usually contain hasMember properties to specify the members of the group.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Kind ;\n owl:disjointWith :Individual,\n :Location,\n :Organization ;\n owl:equivalentClass [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :hasMember ;\n owl:someValuesFrom :Kind ] [ a owl:Restriction ;\n owl:minQualifiedCardinality \"1\"^^xsd:nonNegativeInteger ;\n owl:onClass :Kind ;\n owl:onProperty :hasMember ] ) ] .\n\n:Individual a owl:Class ;\n rdfs:label \"Individual\"@en ;\n rdfs:comment \"An object representing a single person or entity\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Kind ;\n owl:disjointWith :Location,\n :Organization .\n\n:Name a owl:Class ;\n rdfs:label \"Name\"@en ;\n rdfs:comment \"To specify the components of the name of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentClass [ a owl:Class ;\n owl:unionOf ( [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :additional-name ;\n owl:someValuesFrom xsd:string ] [ a owl:Restriction ;\n owl:minCardinality \"0\"^^xsd:nonNegativeInteger ;\n owl:onProperty :additional-name ] ) ] [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :family-name ;\n owl:someValuesFrom xsd:string ] [ a owl:Restriction ;\n owl:maxCardinality \"1\"^^xsd:nonNegativeInteger ;\n owl:onProperty :family-name ] ) ] [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :given-name ;\n owl:someValuesFrom xsd:string ] [ a owl:Restriction ;\n owl:maxCardinality \"1\"^^xsd:nonNegativeInteger ;\n owl:onProperty :given-name ] ) ] [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :honorific-prefix ;\n owl:someValuesFrom xsd:string ] [ a owl:Restriction ;\n owl:minCardinality \"0\"^^xsd:nonNegativeInteger ;\n owl:onProperty :honorific-prefix ] ) ] [ a owl:Class ;\n owl:intersectionOf ( [ a owl:Restriction ;\n owl:onProperty :honorific-suffix ;\n owl:someValuesFrom xsd:string ] [ a owl:Restriction ;\n owl:minCardinality \"0\"^^xsd:nonNegativeInteger ;\n owl:onProperty :honorific-suffix ] ) ] ) ] .\n\n:VCard a owl:Class ;\n rdfs:label \"VCard\"@en ;\n rdfs:comment \"The vCard class is equivalent to the new Kind class, which is the parent for the four explicit types of vCards (Individual, Organization, Location, Group)\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentClass :Kind .\n\n:fn a owl:DatatypeProperty ;\n rdfs:label \"formatted name\"@en ;\n rdfs:comment \"The formatted text corresponding to the name of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:hasAddress a owl:ObjectProperty ;\n rdfs:label \"has address\"@en ;\n rdfs:comment \"To specify the components of the delivery address for the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range :Address .\n\n:hasEmail a owl:ObjectProperty ;\n rdfs:label \"has email\"@en ;\n rdfs:comment \"To specify the electronic mail address for communication with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range :Email .\n\n:hasGeo a owl:ObjectProperty ;\n rdfs:label \"has geo\"@en ;\n rdfs:comment \"To specify information related to the global positioning of the object. May also be used as a property parameter.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:hasKey a owl:ObjectProperty ;\n rdfs:label \"has key\"@en ;\n rdfs:comment \"To specify a public key or authentication certificate associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :key .\n\n:hasLogo a owl:ObjectProperty ;\n rdfs:label \"has logo\"@en ;\n rdfs:comment \"To specify a graphic image of a logo associated with the object \"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :logo .\n\n:hasName a owl:ObjectProperty ;\n rdfs:label \"has name\"@en ;\n rdfs:comment \"To specify the components of the name of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range :Name ;\n owl:equivalentProperty :n .\n\n:hasPhoto a owl:ObjectProperty ;\n rdfs:label \"has photo\"@en ;\n rdfs:comment \"To specify an image or photograph information that annotates some aspect of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :photo .\n\n:hasSound a owl:ObjectProperty ;\n rdfs:label \"has sound\"@en ;\n rdfs:comment \"To specify a digital sound content information that annotates some aspect of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :sound .\n\n:hasTelephone a owl:ObjectProperty ;\n rdfs:label \"has telephone\"@en ;\n rdfs:comment \"To specify the telephone number for telephony communication with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :tel .\n\n:hasURL a owl:ObjectProperty ;\n rdfs:label \"has url\"@en ;\n rdfs:comment \"To specify a uniform resource locator associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :url .\n\n:key a owl:ObjectProperty ;\n rdfs:label \"key\"@en ;\n rdfs:comment \"This object property has been mapped\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :hasKey .\n\n:logo a owl:ObjectProperty ;\n rdfs:label \"logo\"@en ;\n rdfs:comment \"This object property has been mapped\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :hasLogo .\n\n:n a owl:ObjectProperty ;\n rdfs:label \"name\"@en ;\n rdfs:comment \"This object property has been mapped\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :hasName .\n\n:nickname a owl:DatatypeProperty ;\n rdfs:label \"nickname\"@en ;\n rdfs:comment \"The nick name associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:photo a owl:ObjectProperty ;\n rdfs:label \"photo\"@en ;\n rdfs:comment \"This object property has been mapped\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :hasPhoto .\n\n:sound a owl:ObjectProperty ;\n rdfs:label \"sound\"@en ;\n rdfs:comment \"This object property has been mapped\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :hasSound .\n\n:tel a owl:ObjectProperty ;\n rdfs:label \"telephone\"@en ;\n rdfs:comment \"This object property has been mapped\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :hasTelephone .\n\n:url a owl:ObjectProperty ;\n rdfs:label \"url\"@en ;\n rdfs:comment \"This object property has been mapped\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentProperty :hasURL .\n\n:Location a owl:Class ;\n rdfs:label \"Location\"@en ;\n rdfs:comment \"An object representing a named geographical place\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Kind ;\n owl:disjointWith :Organization .\n\n:additional-name a owl:DatatypeProperty ;\n rdfs:label \"additional name\"@en ;\n rdfs:comment \"The additional name associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:country-name a owl:DatatypeProperty ;\n rdfs:label \"country name\"@en ;\n rdfs:comment \"The country name associated with the address of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:family-name a owl:DatatypeProperty ;\n rdfs:label \"family name\"@en ;\n rdfs:comment \"The family name associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:given-name a owl:DatatypeProperty ;\n rdfs:label \"given name\"@en ;\n rdfs:comment \"The given name associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:hasMember a owl:ObjectProperty ;\n rdfs:label \"has member\"@en ;\n rdfs:comment \"To include a member in the group this object represents. (This property can only be used by Group individuals)\"@en ;\n rdfs:domain :Group ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range :Kind .\n\n:honorific-prefix a owl:DatatypeProperty ;\n rdfs:label \"honorific prefix\"@en ;\n rdfs:comment \"The honorific prefix of the name associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:honorific-suffix a owl:DatatypeProperty ;\n rdfs:label \"honorific suffix\"@en ;\n rdfs:comment \"The honorific suffix of the name associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:locality a owl:DatatypeProperty ;\n rdfs:label \"locality\"@en ;\n rdfs:comment \"The locality (e.g. city or town) associated with the address of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:organization-name a owl:DatatypeProperty ;\n rdfs:label \"organization name\"@en ;\n rdfs:comment \"To specify the organizational name associated with the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:postal-code a owl:DatatypeProperty ;\n rdfs:label \"postal code\"@en ;\n rdfs:comment \"The postal code associated with the address of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:region a owl:DatatypeProperty ;\n rdfs:label \"region\"@en ;\n rdfs:comment \"The region (e.g. state or province) associated with the address of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:street-address a owl:DatatypeProperty ;\n rdfs:label \"street address\"@en ;\n rdfs:comment \"The street address associated with the address of the object\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:range xsd:string .\n\n:Organization a owl:Class ;\n rdfs:label \"Organization\"@en ;\n rdfs:comment \"\"\"An object representing an organization. An organization is a single entity, and might represent a business or government, a department or division within a business or government, a club, an association, or the like.\n\"\"\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n rdfs:subClassOf :Kind .\n\n:Gender a owl:Class ;\n rdfs:label \"Gender\"@en ;\n rdfs:comment \"Used for gender codes. The URI of the gender code must be used as the value for Gender.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:Kind a owl:Class ;\n rdfs:label \"Kind\"@en ;\n rdfs:comment \"The parent class for all objects\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ;\n owl:equivalentClass [ a owl:Restriction ;\n owl:minQualifiedCardinality \"1\"^^xsd:nonNegativeInteger ;\n owl:onDataRange xsd:string ;\n owl:onProperty :fn ],\n :VCard .\n\n:Type a owl:Class ;\n rdfs:label \"Type\"@en ;\n rdfs:comment \"Used for type codes. The URI of the type code must be used as the value for Type.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:TelephoneType a owl:Class ;\n rdfs:label \"Phone\"@en ;\n rdfs:comment \"Used for telephone type codes. The URI of the telephone type code must be used as the value for the Telephone Type.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n:RelatedType a owl:Class ;\n rdfs:label \"Relation Type\"@en ;\n rdfs:comment \"Used for relation type codes. The URI of the relation type code must be used as the value for the Relation Type.\"@en ;\n rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> .\n\n<http://www.w3.org/2006/vcard/ns> a owl:Ontology ;\n rdfs:label \"Ontology for vCard\"@en ;\n rdfs:comment \"Ontology for vCard based on RFC6350\"@en ;\n owl:versionInfo \"Final\"@en .\n\n\n";
|
|
19
|
-
const ns = UI.ns;
|
|
20
|
-
const kb = _solidLogic.store;
|
|
21
|
-
const style = UI.style;
|
|
22
|
-
function loadTurtleText(kb, thing, text) {
|
|
23
|
-
const doc = thing.doc();
|
|
24
|
-
if (!kb.holds(undefined, undefined, undefined, doc)) {
|
|
25
|
-
// If not loaded already
|
|
26
|
-
$rdf.parse(text, kb, doc.uri, 'text/turtle'); // Load directly
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Render Individual card
|
|
31
|
-
|
|
32
|
-
async function renderIndividual(dom, div, subject, dataBrowserContext) {
|
|
33
|
-
// //////////////////// DRAG and Drop for mugshot image
|
|
34
|
-
|
|
35
|
-
function complain(message) {
|
|
36
|
-
console.log(message);
|
|
37
|
-
div.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'));
|
|
38
|
-
}
|
|
39
|
-
function spacer() {
|
|
40
|
-
div.appendChild(dom.createElement('div')).setAttribute('style', 'height: 1em');
|
|
41
|
-
}
|
|
42
|
-
function complainIfBad(ok, body) {
|
|
43
|
-
if (!ok) {
|
|
44
|
-
complain('Error: ' + body);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/// ///////////////////////////
|
|
49
|
-
const t = kb.findTypeURIs(subject);
|
|
50
|
-
const isOrganization = !!(t[ns.vcard('Organization').uri] || t[ns.schema('Organization').uri]);
|
|
51
|
-
const editable = kb.updater.editable(subject.doc().uri, kb);
|
|
52
|
-
const individualForm = kb.sym('https://solid.github.io/solid-panes/contact/individualForm.ttl#form1');
|
|
53
|
-
loadTurtleText(kb, individualForm, textOfForms);
|
|
54
|
-
const orgDetailsForm = kb.sym(
|
|
55
|
-
// orgDetailsForm organizationForm
|
|
56
|
-
'https://solid.github.io/solid-panes/contact/individualForm.ttl#orgDetailsForm');
|
|
57
|
-
|
|
58
|
-
// Ontology metadata for this pane we bundle with the JS
|
|
59
|
-
const vcardOnt = UI.ns.vcard('Type').doc();
|
|
60
|
-
if (!kb.holds(undefined, undefined, undefined, vcardOnt)) {
|
|
61
|
-
// If not loaded already
|
|
62
|
-
$rdf.parse(VCARD_ONTOLOGY_TEXT, kb, vcardOnt.uri, 'text/turtle'); // Load ontology directly
|
|
63
|
-
}
|
|
64
|
-
try {
|
|
65
|
-
await kb.fetcher.load(subject.doc());
|
|
66
|
-
} catch (err) {
|
|
67
|
-
complain('Error: Failed to load contact card: ' + err);
|
|
68
|
-
} // end of try catch on load
|
|
69
|
-
|
|
70
|
-
div.style = style.paneDivStyle || 'padding: 0.5em 1.5em 1em 1.5em;';
|
|
71
|
-
_solidLogic.authn.checkUser(); // kick off async operation @@@ use async version
|
|
72
|
-
|
|
73
|
-
div.appendChild((0, _mugshotGallery.renderMugshotGallery)(dom, subject));
|
|
74
|
-
const form = isOrganization ? orgDetailsForm : individualForm;
|
|
75
|
-
UI.widgets.appendForm(dom, div, {}, subject, form, subject.doc(), complainIfBad);
|
|
76
|
-
spacer();
|
|
77
|
-
div.appendChild(await (0, _groupMembershipControl.renderGroupMemberships)(subject, dataBrowserContext));
|
|
78
|
-
spacer();
|
|
79
|
-
|
|
80
|
-
// Auto complete searches in a table
|
|
81
|
-
// Prefer the fom below renderPublicIdControl
|
|
82
|
-
/*
|
|
83
|
-
if (isOrganization) {
|
|
84
|
-
const publicDataTable = div.appendChild(dom.createElement('table'))
|
|
85
|
-
async function publicDataSearchRow (name) {
|
|
86
|
-
async function autoCompleteDone (object, _name) {
|
|
87
|
-
right.innerHTML = ''
|
|
88
|
-
right.appendchild(UI.widgets.personTR(dom, object))
|
|
89
|
-
}
|
|
90
|
-
const row = dom.createElement('tr')
|
|
91
|
-
const left = row.appendChild(dom.createElement('td'))
|
|
92
|
-
left.textContent = name
|
|
93
|
-
const right = row.appendChild(dom.createElement('td'))
|
|
94
|
-
right.appendChild(await renderAutoComplete(dom, subject, ns.owl('sameAs'), autoCompleteDone))
|
|
95
|
-
return row
|
|
96
|
-
}
|
|
97
|
-
publicDataTable.appendChild(await publicDataSearchRow('dbpedia'))
|
|
98
|
-
}
|
|
99
|
-
*/
|
|
100
|
-
// Allow to attach documents etc to the contact card
|
|
101
|
-
|
|
102
|
-
UI.widgets.attachmentList(dom, subject, div, {
|
|
103
|
-
modify: editable
|
|
104
|
-
// promptIcon: UI.icons.iconBase + 'noun_681601.svg',
|
|
105
|
-
// predicate: UI.ns.vcard('url') // @@@@@@@@@ ,--- no, the vcard ontology structure uses a bnode.
|
|
106
|
-
});
|
|
107
|
-
spacer();
|
|
108
|
-
if (isOrganization) {
|
|
109
|
-
div.appendChild(await (0, _webidControl.renderPublicIdControl)(subject, dataBrowserContext));
|
|
110
|
-
} else {
|
|
111
|
-
div.appendChild(await (0, _webidControl.renderWebIdControl)(subject, dataBrowserContext));
|
|
112
|
-
}
|
|
113
|
-
// div.appendChild(dom.createElement('hr'))
|
|
114
|
-
} // renderIndividual
|
|
115
|
-
//# sourceMappingURL=individual.js.map
|
package/dist/individual.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"individual.js","names":["UI","_interopRequireWildcard","require","_solidLogic","_mugshotGallery","_webidControl","_groupMembershipControl","$rdf","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","textOfForms","VCARD_ONTOLOGY_TEXT","ns","kb","store","style","loadTurtleText","thing","text","doc","holds","undefined","parse","uri","renderIndividual","dom","div","subject","dataBrowserContext","complain","message","console","log","appendChild","widgets","errorMessageBlock","spacer","createElement","setAttribute","complainIfBad","ok","body","findTypeURIs","isOrganization","vcard","schema","editable","updater","individualForm","sym","orgDetailsForm","vcardOnt","fetcher","load","err","paneDivStyle","authn","checkUser","renderMugshotGallery","form","appendForm","renderGroupMemberships","attachmentList","modify","renderPublicIdControl","renderWebIdControl"],"sources":["../src/individual.js"],"sourcesContent":["import * as UI from 'solid-ui'\nimport { authn, store } from 'solid-logic'\nimport { renderMugshotGallery } from './mugshotGallery'\nimport { renderWebIdControl, renderPublicIdControl } from './webidControl'\nimport { renderGroupMemberships } from './groupMembershipControl'\nimport textOfForms from './ontology/forms.ttl'\nimport VCARD_ONTOLOGY_TEXT from './ontology/vcard.ttl'\nimport * as $rdf from 'rdflib'\n\nconst ns = UI.ns\nconst kb = store\nconst style = UI.style\n\nexport function loadTurtleText (kb, thing, text) {\n const doc = thing.doc()\n if (!kb.holds(undefined, undefined, undefined, doc)) {\n // If not loaded already\n $rdf.parse(text, kb, doc.uri, 'text/turtle') // Load directly\n }\n}\n\n// Render Individual card\n\nexport async function renderIndividual (dom, div, subject, dataBrowserContext) {\n // //////////////////// DRAG and Drop for mugshot image\n\n function complain (message) {\n console.log(message)\n div.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'))\n }\n\n function spacer () {\n div\n .appendChild(dom.createElement('div'))\n .setAttribute('style', 'height: 1em')\n }\n function complainIfBad (ok, body) {\n if (!ok) {\n complain('Error: ' + body)\n }\n }\n\n /// ///////////////////////////\n const t = kb.findTypeURIs(subject)\n const isOrganization = !!(t[ns.vcard('Organization').uri] || t[ns.schema('Organization').uri])\n const editable = kb.updater.editable(subject.doc().uri, kb)\n\n const individualForm = kb.sym(\n 'https://solid.github.io/solid-panes/contact/individualForm.ttl#form1'\n )\n loadTurtleText(kb, individualForm, textOfForms)\n\n const orgDetailsForm = kb.sym( // orgDetailsForm organizationForm\n 'https://solid.github.io/solid-panes/contact/individualForm.ttl#orgDetailsForm'\n )\n\n // Ontology metadata for this pane we bundle with the JS\n const vcardOnt = UI.ns.vcard('Type').doc()\n if (!kb.holds(undefined, undefined, undefined, vcardOnt)) {\n // If not loaded already\n $rdf.parse(VCARD_ONTOLOGY_TEXT, kb, vcardOnt.uri, 'text/turtle') // Load ontology directly\n }\n\n try {\n await kb.fetcher.load(subject.doc())\n } catch (err) {\n complain('Error: Failed to load contact card: ' + err)\n } // end of try catch on load\n\n div.style = style.paneDivStyle || 'padding: 0.5em 1.5em 1em 1.5em;'\n\n authn.checkUser() // kick off async operation @@@ use async version\n\n div.appendChild(renderMugshotGallery(dom, subject))\n\n const form = isOrganization ? orgDetailsForm : individualForm\n UI.widgets.appendForm(\n dom,\n div,\n {},\n subject,\n form,\n subject.doc(),\n complainIfBad\n )\n\n spacer()\n\n div.appendChild(await renderGroupMemberships(subject, dataBrowserContext))\n\n spacer()\n\n // Auto complete searches in a table\n // Prefer the fom below renderPublicIdControl\n /*\n if (isOrganization) {\n const publicDataTable = div.appendChild(dom.createElement('table'))\n async function publicDataSearchRow (name) {\n async function autoCompleteDone (object, _name) {\n right.innerHTML = ''\n right.appendchild(UI.widgets.personTR(dom, object))\n }\n const row = dom.createElement('tr')\n const left = row.appendChild(dom.createElement('td'))\n left.textContent = name\n const right = row.appendChild(dom.createElement('td'))\n right.appendChild(await renderAutoComplete(dom, subject, ns.owl('sameAs'), autoCompleteDone))\n return row\n }\n publicDataTable.appendChild(await publicDataSearchRow('dbpedia'))\n }\n*/\n // Allow to attach documents etc to the contact card\n\n UI.widgets.attachmentList(dom, subject, div, {\n modify: editable\n // promptIcon: UI.icons.iconBase + 'noun_681601.svg',\n // predicate: UI.ns.vcard('url') // @@@@@@@@@ ,--- no, the vcard ontology structure uses a bnode.\n })\n\n spacer()\n\n if (isOrganization) {\n div.appendChild(await renderPublicIdControl(subject, dataBrowserContext))\n } else {\n div.appendChild(await renderWebIdControl(subject, dataBrowserContext))\n }\n // div.appendChild(dom.createElement('hr'))\n} // renderIndividual\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.mintNewAddressBook = mintNewAddressBook;
|
|
7
|
-
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
8
|
-
var _solidLogic = require("solid-logic");
|
|
9
|
-
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
10
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
|
-
const {
|
|
12
|
-
setACLUserPublic
|
|
13
|
-
} = _solidLogic.solidLogicSingleton.acl;
|
|
14
|
-
// const mime = require('mime-types')
|
|
15
|
-
// const toolsPane0 = require('./toolsPane')
|
|
16
|
-
// const toolsPane = toolsPane0.toolsPane
|
|
17
|
-
|
|
18
|
-
// const ns = UI.ns
|
|
19
|
-
// const utils = UI.utils
|
|
20
|
-
|
|
21
|
-
// Mint a new address book
|
|
22
|
-
|
|
23
|
-
function mintNewAddressBook(dataBrowserContext, context) {
|
|
24
|
-
return new Promise(function (resolve, reject) {
|
|
25
|
-
UI.login.ensureLoadedProfile(context).then(context => {
|
|
26
|
-
// 20180713
|
|
27
|
-
console.log('Logged in as ' + context.me);
|
|
28
|
-
const me = context.me;
|
|
29
|
-
const dom = context.dom;
|
|
30
|
-
const div = context.div;
|
|
31
|
-
const kb = dataBrowserContext.session.store;
|
|
32
|
-
const ns = UI.ns;
|
|
33
|
-
const newBase = context.newBase || context.newInstance.dir().uri;
|
|
34
|
-
const instanceClass = context.instanceClass || ns.vcard('AddressBook');
|
|
35
|
-
if (instanceClass.sameTerm(ns.vcard('Group'))) {
|
|
36
|
-
// Make a group not an address book
|
|
37
|
-
const g = context.newInstance || kb.sym(context.newBase + 'index.ttl#this');
|
|
38
|
-
const doc = g.doc();
|
|
39
|
-
kb.add(g, ns.rdf('type'), ns.vcard('Group'), doc);
|
|
40
|
-
kb.add(g, ns.vcard('fn'), context.instanceName || 'untitled group', doc); // @@ write doc back
|
|
41
|
-
kb.fetcher.putBack(doc, {
|
|
42
|
-
contentType: 'text/turtle'
|
|
43
|
-
}).then(function (_xhr) {
|
|
44
|
-
resolve(context);
|
|
45
|
-
}).catch(function (err) {
|
|
46
|
-
reject(new Error('Error creating document for new group ' + err));
|
|
47
|
-
});
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const appInstanceNoun = 'address book';
|
|
51
|
-
function complain(message) {
|
|
52
|
-
div.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'));
|
|
53
|
-
}
|
|
54
|
-
let bookContents = `@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.
|
|
55
|
-
@prefix ab: <http://www.w3.org/ns/pim/ab#>.
|
|
56
|
-
@prefix dc: <http://purl.org/dc/elements/1.1/>.
|
|
57
|
-
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
|
|
58
|
-
|
|
59
|
-
<#this> a vcard:AddressBook;
|
|
60
|
-
dc:title "New address Book";
|
|
61
|
-
vcard:nameEmailIndex <people.ttl>;
|
|
62
|
-
vcard:groupIndex <groups.ttl>.
|
|
63
|
-
`;
|
|
64
|
-
bookContents += '<#this> <http://www.w3.org/ns/auth/acl#owner> <' + me.uri + '>.\n\n';
|
|
65
|
-
const newAppInstance = kb.sym(newBase + 'index.ttl#this');
|
|
66
|
-
const toBeWritten = [{
|
|
67
|
-
to: 'index.ttl',
|
|
68
|
-
content: bookContents,
|
|
69
|
-
contentType: 'text/turtle'
|
|
70
|
-
}, {
|
|
71
|
-
to: 'groups.ttl',
|
|
72
|
-
content: '',
|
|
73
|
-
contentType: 'text/turtle'
|
|
74
|
-
}, {
|
|
75
|
-
to: 'people.ttl',
|
|
76
|
-
content: '',
|
|
77
|
-
contentType: 'text/turtle'
|
|
78
|
-
}, {
|
|
79
|
-
to: '',
|
|
80
|
-
existing: true,
|
|
81
|
-
aclOptions: {
|
|
82
|
-
defaultForNew: true
|
|
83
|
-
}
|
|
84
|
-
}];
|
|
85
|
-
|
|
86
|
-
// @@ Ask user abut ACLs?
|
|
87
|
-
|
|
88
|
-
//
|
|
89
|
-
// @@ Add header to PUT If-None-Match: * to prevent overwrite
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
function claimSuccess(newAppInstance, appInstanceNoun) {
|
|
93
|
-
// @@ delete or grey other stuff
|
|
94
|
-
console.log(`New ${appInstanceNoun} created at ${newAppInstance}`);
|
|
95
|
-
const p = div.appendChild(dom.createElement('p'));
|
|
96
|
-
p.setAttribute('style', 'font-size: 140%;');
|
|
97
|
-
p.innerHTML = 'Your <a href=\'' + newAppInstance.uri + '\'><b>new ' + appInstanceNoun + '</b></a> is ready. ' + '<br/><br/><a href=\'' + newAppInstance.uri + '\'>Go to new ' + appInstanceNoun + '</a>';
|
|
98
|
-
const newContext = Object.assign({
|
|
99
|
-
newInstance: newAppInstance
|
|
100
|
-
}, context);
|
|
101
|
-
resolve(newContext);
|
|
102
|
-
}
|
|
103
|
-
function doNextTask() {
|
|
104
|
-
function checkOKSetACL(uri, ok) {
|
|
105
|
-
if (!ok) {
|
|
106
|
-
complain('Error writing new file ' + task.to);
|
|
107
|
-
return reject(new Error('Error writing new file ' + task.to));
|
|
108
|
-
}
|
|
109
|
-
setACLUserPublic(dest, me, aclOptions).then(() => doNextTask()).catch(err => {
|
|
110
|
-
const message = 'Error setting access permissions for ' + task.to + ' : ' + err.message;
|
|
111
|
-
complain(message);
|
|
112
|
-
return reject(new Error(message));
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
if (toBeWritten.length === 0) {
|
|
116
|
-
claimSuccess(newAppInstance, appInstanceNoun);
|
|
117
|
-
} else {
|
|
118
|
-
var task = toBeWritten.shift(); /* eslint-disable-line no-var */
|
|
119
|
-
console.log('Creating new file ' + task.to + ' in new instance ');
|
|
120
|
-
var dest = $rdf.uri.join(task.to, newBase); /* eslint-disable-line no-var */
|
|
121
|
-
var aclOptions = task.aclOptions || {}; /* eslint-disable-line no-var */
|
|
122
|
-
|
|
123
|
-
if ('content' in task) {
|
|
124
|
-
kb.fetcher.webOperation('PUT', dest, {
|
|
125
|
-
data: task.content,
|
|
126
|
-
saveMetadata: true,
|
|
127
|
-
contentType: task.contentType
|
|
128
|
-
}).then(() => checkOKSetACL(dest, true));
|
|
129
|
-
} else if ('existing' in task) {
|
|
130
|
-
checkOKSetACL(dest, true);
|
|
131
|
-
} else {
|
|
132
|
-
reject(new Error('copy not expected buiding new app!!'));
|
|
133
|
-
// const from = task.from || task.to // default source to be same as dest
|
|
134
|
-
// UI.widgets.webCopy(base + from, dest, task.contentType, checkOKSetACL)
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
doNextTask();
|
|
139
|
-
}, err => {
|
|
140
|
-
// log in then
|
|
141
|
-
context.div.appendChild(UI.widgets.errorMessageBlock(err));
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=mintNewAddressBook.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mintNewAddressBook.js","names":["UI","_interopRequireWildcard","require","_solidLogic","$rdf","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","setACLUserPublic","solidLogicSingleton","acl","mintNewAddressBook","dataBrowserContext","context","Promise","resolve","reject","login","ensureLoadedProfile","then","console","log","me","dom","div","kb","session","store","ns","newBase","newInstance","dir","uri","instanceClass","vcard","sameTerm","g","sym","doc","add","rdf","instanceName","fetcher","putBack","contentType","_xhr","catch","err","Error","appInstanceNoun","complain","message","appendChild","widgets","errorMessageBlock","bookContents","newAppInstance","toBeWritten","to","content","existing","aclOptions","defaultForNew","claimSuccess","p","createElement","setAttribute","innerHTML","newContext","assign","doNextTask","checkOKSetACL","ok","task","dest","length","shift","join","webOperation","data","saveMetadata"],"sources":["../src/mintNewAddressBook.js"],"sourcesContent":["import * as UI from 'solid-ui'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as $rdf from 'rdflib'\n\nconst { setACLUserPublic } = solidLogicSingleton.acl\n// const mime = require('mime-types')\n// const toolsPane0 = require('./toolsPane')\n// const toolsPane = toolsPane0.toolsPane\n\n// const ns = UI.ns\n// const utils = UI.utils\n\n// Mint a new address book\n\nexport function mintNewAddressBook (dataBrowserContext, context) {\n return new Promise(function (resolve, reject) {\n UI.login.ensureLoadedProfile(context).then(\n context => {\n // 20180713\n console.log('Logged in as ' + context.me)\n const me = context.me\n\n const dom = context.dom\n const div = context.div\n const kb = dataBrowserContext.session.store\n const ns = UI.ns\n const newBase = context.newBase || context.newInstance.dir().uri\n const instanceClass = context.instanceClass || ns.vcard('AddressBook')\n\n if (instanceClass.sameTerm(ns.vcard('Group'))) {\n // Make a group not an address book\n const g =\n context.newInstance || kb.sym(context.newBase + 'index.ttl#this')\n const doc = g.doc()\n kb.add(g, ns.rdf('type'), ns.vcard('Group'), doc)\n kb.add(\n g,\n ns.vcard('fn'),\n context.instanceName || 'untitled group',\n doc\n ) // @@ write doc back\n kb.fetcher\n .putBack(doc, { contentType: 'text/turtle' })\n .then(function (_xhr) {\n resolve(context)\n })\n .catch(function (err) {\n reject(\n new Error('Error creating document for new group ' + err)\n )\n })\n return\n }\n const appInstanceNoun = 'address book'\n\n function complain (message) {\n div.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'))\n }\n\n let bookContents = `@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n @prefix ab: <http://www.w3.org/ns/pim/ab#>.\n @prefix dc: <http://purl.org/dc/elements/1.1/>.\n @prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n\n <#this> a vcard:AddressBook;\n dc:title \"New address Book\";\n vcard:nameEmailIndex <people.ttl>;\n vcard:groupIndex <groups.ttl>.\n`\n\n bookContents +=\n '<#this> <http://www.w3.org/ns/auth/acl#owner> <' +\n me.uri +\n '>.\\n\\n'\n\n const newAppInstance = kb.sym(newBase + 'index.ttl#this')\n\n const toBeWritten = [\n {\n to: 'index.ttl',\n content: bookContents,\n contentType: 'text/turtle'\n },\n { to: 'groups.ttl', content: '', contentType: 'text/turtle' },\n { to: 'people.ttl', content: '', contentType: 'text/turtle' },\n { to: '', existing: true, aclOptions: { defaultForNew: true } }\n ]\n\n // @@ Ask user abut ACLs?\n\n //\n // @@ Add header to PUT If-None-Match: * to prevent overwrite\n //\n\n function claimSuccess (newAppInstance, appInstanceNoun) {\n // @@ delete or grey other stuff\n console.log(`New ${appInstanceNoun} created at ${newAppInstance}`)\n const p = div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 140%;')\n p.innerHTML =\n 'Your <a href=\\'' +\n newAppInstance.uri +\n '\\'><b>new ' +\n appInstanceNoun +\n '</b></a> is ready. ' +\n '<br/><br/><a href=\\'' +\n newAppInstance.uri +\n '\\'>Go to new ' +\n appInstanceNoun +\n '</a>'\n const newContext = Object.assign(\n { newInstance: newAppInstance },\n context\n )\n resolve(newContext)\n }\n\n function doNextTask () {\n function checkOKSetACL (uri, ok) {\n if (!ok) {\n complain('Error writing new file ' + task.to)\n return reject(new Error('Error writing new file ' + task.to))\n }\n\n setACLUserPublic(dest, me, aclOptions)\n .then(() => doNextTask())\n .catch(err => {\n const message =\n 'Error setting access permissions for ' +\n task.to +\n ' : ' +\n err.message\n complain(message)\n return reject(new Error(message))\n })\n }\n\n if (toBeWritten.length === 0) {\n claimSuccess(newAppInstance, appInstanceNoun)\n } else {\n var task = toBeWritten.shift() /* eslint-disable-line no-var */\n console.log('Creating new file ' + task.to + ' in new instance ')\n var dest = $rdf.uri.join(task.to, newBase) /* eslint-disable-line no-var */\n var aclOptions = task.aclOptions || {} /* eslint-disable-line no-var */\n\n if ('content' in task) {\n kb.fetcher\n .webOperation('PUT', dest, {\n data: task.content,\n saveMetadata: true,\n contentType: task.contentType\n })\n .then(() => checkOKSetACL(dest, true))\n } else if ('existing' in task) {\n checkOKSetACL(dest, true)\n } else {\n reject(new Error('copy not expected buiding new app!!'))\n // const from = task.from || task.to // default source to be same as dest\n // UI.widgets.webCopy(base + from, dest, task.contentType, checkOKSetACL)\n }\n }\n }\n doNextTask()\n },\n err => {\n // log in then\n context.div.appendChild(UI.widgets.errorMessageBlock(err))\n }\n )\n })\n}\n"],"mappings":"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","ignoreList":[]}
|