cocoda-sdk 3.6.1 → 3.6.2
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/dist/cjs/index.cjs +47 -33
- package/dist/cocoda-sdk.js +7 -7
- package/dist/cocoda-sdk.js.map +3 -3
- package/dist/esm/providers/base-provider.js +1 -1
- package/dist/esm/providers/concept-api-provider.js +3 -6
- package/dist/esm/providers/ols-api-provider.js +8 -17
- package/dist/esm/providers/skosmos-api-provider.js +35 -9
- package/package.json +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -436,7 +436,7 @@ var BaseProvider = class {
|
|
|
436
436
|
}
|
|
437
437
|
return data3;
|
|
438
438
|
}, (error) => {
|
|
439
|
-
const count = error.config
|
|
439
|
+
const count = error.config?._retryCount ?? 0;
|
|
440
440
|
const method = error.config.method;
|
|
441
441
|
const statusCode = error.response?.status;
|
|
442
442
|
if (this._retryConfig.methods.includes(method) && this._retryConfig.statusCodes.includes(statusCode) && count < this._retryConfig.count) {
|
|
@@ -2117,13 +2117,10 @@ var ConceptApiProvider = class extends BaseProvider {
|
|
|
2117
2117
|
if (!url) {
|
|
2118
2118
|
throw new MissingApiUrlError();
|
|
2119
2119
|
}
|
|
2120
|
-
if (!concepts) {
|
|
2121
|
-
throw new InvalidOrMissingParameterError({ parameter: "concepts" });
|
|
2122
|
-
}
|
|
2123
2120
|
if (!Array.isArray(concepts)) {
|
|
2124
|
-
concepts = [concepts];
|
|
2121
|
+
concepts = concepts ? [concepts] : [];
|
|
2125
2122
|
}
|
|
2126
|
-
|
|
2123
|
+
const uris = concepts.map((concept) => concept.uri).filter((uri) => uri != null);
|
|
2127
2124
|
return this.axios({
|
|
2128
2125
|
...config,
|
|
2129
2126
|
method: "get",
|
|
@@ -2131,7 +2128,7 @@ var ConceptApiProvider = class extends BaseProvider {
|
|
|
2131
2128
|
params: {
|
|
2132
2129
|
...this._defaultParams,
|
|
2133
2130
|
// ? What should the default limit be?
|
|
2134
|
-
limit:
|
|
2131
|
+
limit: 100,
|
|
2135
2132
|
...config.params || {},
|
|
2136
2133
|
uri: uris.join("|")
|
|
2137
2134
|
}
|
|
@@ -2709,7 +2706,7 @@ var SkosmosApiProvider = class extends BaseProvider {
|
|
|
2709
2706
|
* @private
|
|
2710
2707
|
*/
|
|
2711
2708
|
_getApiUrl(scheme, endpoint, params) {
|
|
2712
|
-
const VOCID = scheme
|
|
2709
|
+
const VOCID = scheme?.VOCID || this.schemes.find((s) => import_jskos_tools8.default.compare(s, scheme))?.VOCID;
|
|
2713
2710
|
if (!VOCID) {
|
|
2714
2711
|
throw new InvalidOrMissingParameterError({ parameter: "scheme", message: "Missing scheme or VOCID property on scheme" });
|
|
2715
2712
|
}
|
|
@@ -2843,6 +2840,32 @@ var SkosmosApiProvider = class extends BaseProvider {
|
|
|
2843
2840
|
if (!concept.type.length) {
|
|
2844
2841
|
concept.type = ["http://www.w3.org/2004/02/skos/core#Concept"];
|
|
2845
2842
|
}
|
|
2843
|
+
const map = {
|
|
2844
|
+
"skos:definition": "definition",
|
|
2845
|
+
"skos:note": "note",
|
|
2846
|
+
"skos:scopeNote": "scopeNote",
|
|
2847
|
+
"skos:example": "example",
|
|
2848
|
+
"skos:historyNote": "historyNote",
|
|
2849
|
+
"skos:editorialNote": "editorialNote",
|
|
2850
|
+
"skos:changeNote": "changeNote"
|
|
2851
|
+
};
|
|
2852
|
+
for (let key in map) {
|
|
2853
|
+
if (skosmosConcept[key]) {
|
|
2854
|
+
const value = skosmosConcept[key];
|
|
2855
|
+
if (value.lang && value.value) {
|
|
2856
|
+
concept[map[key]] = {
|
|
2857
|
+
[value.lang]: value.value
|
|
2858
|
+
};
|
|
2859
|
+
} else if (Array.isArray(value)) {
|
|
2860
|
+
concept[map[key]] = {};
|
|
2861
|
+
for (let val of value) {
|
|
2862
|
+
if (val.lang && val.value) {
|
|
2863
|
+
concept[map[key]][val.lang] = val.value;
|
|
2864
|
+
}
|
|
2865
|
+
}
|
|
2866
|
+
}
|
|
2867
|
+
}
|
|
2868
|
+
}
|
|
2846
2869
|
return concept;
|
|
2847
2870
|
}
|
|
2848
2871
|
/**
|
|
@@ -2922,20 +2945,20 @@ var SkosmosApiProvider = class extends BaseProvider {
|
|
|
2922
2945
|
concepts = concepts.map((c) => ({ uri: c.uri, inScheme: c.inScheme }));
|
|
2923
2946
|
const newConcepts = [];
|
|
2924
2947
|
for (let concept of concepts) {
|
|
2925
|
-
|
|
2948
|
+
if (!concept || !concept.uri) {
|
|
2949
|
+
throw new InvalidOrMissingParameterError({ parameter: "concept", message: "Missing concept URI" });
|
|
2950
|
+
}
|
|
2951
|
+
const params = { uri: concept.uri, format: "application/json" };
|
|
2952
|
+
const url = this._getApiUrl(concept?.inScheme?.[0], "/data", params);
|
|
2926
2953
|
if (!url) {
|
|
2927
2954
|
continue;
|
|
2928
2955
|
}
|
|
2929
2956
|
const result = await this.axios({
|
|
2930
2957
|
...config,
|
|
2931
2958
|
method: "get",
|
|
2932
|
-
url
|
|
2933
|
-
params: {
|
|
2934
|
-
uri: concept.uri,
|
|
2935
|
-
format: "application/json"
|
|
2936
|
-
}
|
|
2959
|
+
url
|
|
2937
2960
|
});
|
|
2938
|
-
const resultConcept = result
|
|
2961
|
+
const resultConcept = result?.graph?.find((c) => import_jskos_tools8.default.compare(c, concept));
|
|
2939
2962
|
if (resultConcept) {
|
|
2940
2963
|
const newConcept = this._toJskosConcept(resultConcept, { concept, result });
|
|
2941
2964
|
for (let type of ["broader", "narrower"]) {
|
|
@@ -3049,7 +3072,7 @@ var SkosmosApiProvider = class extends BaseProvider {
|
|
|
3049
3072
|
method: "get",
|
|
3050
3073
|
url
|
|
3051
3074
|
});
|
|
3052
|
-
for (let type of response
|
|
3075
|
+
for (let type of response?.types || []) {
|
|
3053
3076
|
if (type.uri == "http://www.w3.org/2004/02/skos/core#Concept") {
|
|
3054
3077
|
continue;
|
|
3055
3078
|
}
|
|
@@ -4382,7 +4405,7 @@ var OlsApiProvider = class extends BaseProvider {
|
|
|
4382
4405
|
};
|
|
4383
4406
|
constructor(config) {
|
|
4384
4407
|
super(config);
|
|
4385
|
-
this.endpoint = config.endpoint;
|
|
4408
|
+
this.endpoint = config.endpoint || config.uri;
|
|
4386
4409
|
}
|
|
4387
4410
|
/**
|
|
4388
4411
|
* Used by `registryForScheme` (see src/lib/CocodaSDK.js) to determine a provider config for a concept schceme.
|
|
@@ -4461,7 +4484,7 @@ var OlsApiProvider = class extends BaseProvider {
|
|
|
4461
4484
|
}
|
|
4462
4485
|
if (term["http://www.w3.org/2000/01/rdf-schema#label"]) {
|
|
4463
4486
|
concept.prefLabel = {};
|
|
4464
|
-
concept.prefLabel[lan] = term["http://www.w3.org/2000/01/rdf-schema#label"];
|
|
4487
|
+
concept.prefLabel[lan] = term["http://www.w3.org/2000/01/rdf-schema#label"].value || term["http://www.w3.org/2000/01/rdf-schema#label"];
|
|
4465
4488
|
}
|
|
4466
4489
|
concept.type = [
|
|
4467
4490
|
"http://www.w3.org/2004/02/skos/core#Concept",
|
|
@@ -4627,11 +4650,8 @@ var OlsApiProvider = class extends BaseProvider {
|
|
|
4627
4650
|
async getTop({ scheme }) {
|
|
4628
4651
|
const VOCID = await this._getSchemeVOCID(scheme);
|
|
4629
4652
|
if (VOCID) {
|
|
4630
|
-
let
|
|
4631
|
-
|
|
4632
|
-
if (response?.elements) {
|
|
4633
|
-
return Promise.all(response.elements.map((item) => this._termToJSKOS(item)));
|
|
4634
|
-
}
|
|
4653
|
+
let response = await this._paginate(["ontologies", VOCID, "classes"], { hasDirectParents: "false" }, null);
|
|
4654
|
+
return Promise.all(response.map((item) => this._termToJSKOS(item)));
|
|
4635
4655
|
}
|
|
4636
4656
|
return [];
|
|
4637
4657
|
}
|
|
@@ -4647,22 +4667,16 @@ var OlsApiProvider = class extends BaseProvider {
|
|
|
4647
4667
|
async getNarrower({ concept }) {
|
|
4648
4668
|
const { VOCID, iri } = await this._splitConcept(concept);
|
|
4649
4669
|
if (VOCID && iri) {
|
|
4650
|
-
|
|
4651
|
-
|
|
4652
|
-
if (response?.elements) {
|
|
4653
|
-
return Promise.all(response.elements.map((item) => this._termToJSKOS(item)));
|
|
4654
|
-
}
|
|
4670
|
+
const items = await this._paginate(["ontologies", VOCID, "classes", iri, "children"], {}, 0);
|
|
4671
|
+
return Promise.all(items.map((item) => this._termToJSKOS(item)));
|
|
4655
4672
|
}
|
|
4656
4673
|
return [];
|
|
4657
4674
|
}
|
|
4658
4675
|
async getAncestors({ concept }) {
|
|
4659
4676
|
const { VOCID, iri } = await this._splitConcept(concept);
|
|
4660
4677
|
if (VOCID && iri) {
|
|
4661
|
-
let
|
|
4662
|
-
|
|
4663
|
-
if (response?.elements) {
|
|
4664
|
-
return Promise.all(response.elements.map((item) => this._termToJSKOS(item)));
|
|
4665
|
-
}
|
|
4678
|
+
let response = await this._paginate(["ontologies", VOCID, "classes", iri, "ancestors"], {}, null);
|
|
4679
|
+
return Promise.all(response.map((item) => this._termToJSKOS(item)));
|
|
4666
4680
|
}
|
|
4667
4681
|
return [];
|
|
4668
4682
|
}
|