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.
@@ -436,7 +436,7 @@ var BaseProvider = class {
436
436
  }
437
437
  return data3;
438
438
  }, (error) => {
439
- const count = error.config._retryCount ?? 0;
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
- let uris = concepts.map((concept) => concept.uri).filter((uri) => uri != null);
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: 500,
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 && scheme.VOCID || this.schemes.find((s) => import_jskos_tools8.default.compare(s, scheme))?.VOCID;
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
- const url = this._getDataUrl(concept, { addFormatParameter: false });
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 && result.graph && result.graph.find((c) => import_jskos_tools8.default.compare(c, concept));
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 && response.types || []) {
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 url = this._getApiUrl(["ontologies", VOCID, "classes"], { hasDirectParents: "false" });
4631
- let response = await this._request(url);
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
- let url = this._getApiUrl(["ontologies", VOCID, "classes", iri, "children"]);
4651
- let response = await this._request(url);
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 url = this._getApiUrl(["ontologies", VOCID, "classes", iri, "ancestors"]);
4662
- let response = await this._request(url);
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
  }