ogc-na 0.3.51__py3-none-any.whl → 0.3.53__py3-none-any.whl

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.

Potentially problematic release.


This version of ogc-na might be problematic. Click here for more details.

ogc/na/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.3.51'
16
- __version_tuple__ = version_tuple = (0, 3, 51)
15
+ __version__ = version = '0.3.53'
16
+ __version_tuple__ = version_tuple = (0, 3, 53)
ogc/na/annotate_schema.py CHANGED
@@ -132,6 +132,7 @@ import jsonpointer
132
132
  import jsonschema
133
133
  import requests_cache
134
134
 
135
+ from ogc.na.exceptions import ContextLoadError, SchemaLoadError
135
136
  from ogc.na.util import is_url, load_yaml, LRUCache, dump_yaml, \
136
137
  merge_contexts, merge_dicts, dict_contains, JSON_LD_KEYWORDS
137
138
 
@@ -200,8 +201,11 @@ class SchemaResolver:
200
201
  """
201
202
  contents = self._schema_cache.get(s)
202
203
  if contents is None:
203
- contents = read_contents(s)[0]
204
- self._schema_cache[s] = contents
204
+ try:
205
+ contents = read_contents(s)[0]
206
+ self._schema_cache[s] = contents
207
+ except Exception as e:
208
+ raise SchemaLoadError(f'Error loading schema from schema source "{s}"') from e
205
209
  return load_json_yaml(contents)
206
210
 
207
211
  def resolve_ref(self, ref: str | Path, from_schema: ReferencedSchema | None = None) -> tuple[Path | str, str]:
@@ -257,7 +261,10 @@ class SchemaResolver:
257
261
  if force_contents:
258
262
  is_json = False
259
263
  if isinstance(force_contents, str):
260
- contents = load_yaml(content=force_contents)
264
+ try:
265
+ contents = load_yaml(content=force_contents)
266
+ except Exception as e:
267
+ raise SchemaLoadError('Error loading schema from string contents') from e
261
268
  else:
262
269
  contents = force_contents
263
270
  else:
@@ -394,13 +401,20 @@ def resolve_context(ctx: Path | str | dict | list, expand_uris=True) -> Resolved
394
401
  def resolve_inner(inner_ctx, ctx_stack=None) -> ResolvedContext | None:
395
402
  resolved = None
396
403
  if isinstance(inner_ctx, Path) or (isinstance(inner_ctx, str) and not is_url(inner_ctx)):
397
- resolved = resolve_context(load_yaml(filename=ctx).get('@context'))
404
+ try:
405
+ resolved = resolve_context(load_yaml(filename=ctx).get('@context'))
406
+ except Exception as e:
407
+ raise ContextLoadError(f'Error resolving context document in file "{ctx}"') from e
398
408
  elif isinstance(inner_ctx, str):
399
- r = requests_session.get(ctx)
400
- r.raise_for_status()
401
- fetched = r.json().get('@context')
402
- if fetched:
403
- resolved = resolve_context(fetched)
409
+ try:
410
+ r = requests_session.get(ctx)
411
+ r.raise_for_status()
412
+ fetched = r.json().get('@context')
413
+ if fetched:
414
+ resolved = resolve_context(fetched)
415
+ except Exception as e:
416
+ raise ContextLoadError(f'Error resolving context document at URL "{ctx}"') from e
417
+
404
418
  elif isinstance(inner_ctx, Sequence):
405
419
  resolved_ctx = {}
406
420
  inner_prefixes = {}
ogc/na/exceptions.py ADDED
@@ -0,0 +1,6 @@
1
+ class ContextLoadError(IOError):
2
+ pass
3
+
4
+
5
+ class SchemaLoadError(IOError):
6
+ pass
ogc/na/ingest_json.py CHANGED
@@ -869,8 +869,9 @@ def _process_cmdln():
869
869
 
870
870
  parser.add_argument(
871
871
  '--transform-arg',
872
+ metavar='ARG=VALUE',
872
873
  nargs='*',
873
- help='Additional argument to pass to the jq transforms in the form variable=value'
874
+ help='Additional argument to pass to the jq transforms in the form argument=value'
874
875
  )
875
876
 
876
877
  parser.add_argument(
ogc/na/update_vocabs.py CHANGED
@@ -13,6 +13,16 @@ This script can be used as a library, or run directly from the cli;
13
13
  please refer to the
14
14
  [OGC NamingAuthority repository](https://github.com/opengeospatial/NamingAuthority)
15
15
  for usage details on the latter.
16
+
17
+ ## Defining the SPARQL graph URI
18
+
19
+ The graph URI that will be used for an RDF document when pushing the data to a SPARQL endpoint can
20
+ be defined by adding a `http://www.opengis.net/ogc-na#targetGraph` predicate anywhere
21
+ inside it, for example:
22
+
23
+ ```
24
+ [] <http://www.opengis.net/ogc-na#targetGraph> <https://example.com/target-graph> .
25
+ ```
16
26
  """
17
27
 
18
28
  from __future__ import annotations
@@ -26,7 +36,7 @@ from pathlib import Path
26
36
  from typing import Union, Generator
27
37
 
28
38
  import requests
29
- from rdflib import Graph, RDF, SKOS
39
+ from rdflib import Graph, RDF, SKOS, URIRef
30
40
 
31
41
  from ogc.na import util
32
42
  from ogc.na.domain_config import DomainConfiguration, DomainConfigurationEntry
@@ -108,12 +118,21 @@ def get_graph_uri_for_vocab(g: Graph = None) -> Generator[str, None, None]:
108
118
  """
109
119
  Find a target graph URI in a vocabulary [Graph][rdflib.Graph].
110
120
 
111
- In effect, this function merely looks for
121
+ This function looks for any object of the http://www.opengis.net/ogc-na#targetGraph
122
+ predicate, and in its absence for a
112
123
  [SKOS ConceptScheme's](https://www.w3.org/TR/2008/WD-skos-reference-20080829/skos.html#ConceptScheme).
113
124
 
125
+ The following can be included in a Turtle document to specify its graph:
126
+
127
+ ```
128
+ [] <http://www.opengis.net/ogc-na#targetGraph> <https://example.com/target/graph> .
129
+ ```
130
+
114
131
  :param g: the [Graph][rdflib.Graph] for which to find the target URI
115
132
  :return: a [Node][rdflib.term.Node] generator
116
133
  """
134
+ for o in g.objects(predicate=URIRef('http://www.opengis.net/ogc-na#targetGraph')):
135
+ yield str(o)
117
136
  for s in g.subjects(predicate=RDF.type, object=SKOS.ConceptScheme):
118
137
  yield str(s)
119
138
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ogc_na
3
- Version: 0.3.51
3
+ Version: 0.3.53
4
4
  Summary: OGC Naming Authority tools
5
5
  Author-email: Rob Atkinson <ratkinson@ogc.org>, Piotr Zaborowski <pzaborowski@ogc.org>, Alejandro Villar <avillar@ogc.org>
6
6
  Project-URL: Homepage, https://github.com/opengeospatial/ogc-na-tools/
@@ -1,20 +1,21 @@
1
1
  ogc/na/__init__.py,sha256=uzcNiJ3uKFNJ1HBfKxIwgAy2HMUFsLAe5RkrUg8ncac,464
2
- ogc/na/_version.py,sha256=60Ia3PnFN2AmmKgfCNYmpAMQrUrLW-QEC6i_cVC4Jw8,413
3
- ogc/na/annotate_schema.py,sha256=e6bOIJ05oVqwugWUUuBOQ8P9QL4GKRCE1PKua9kSHRs,41920
2
+ ogc/na/_version.py,sha256=ms1ItKqACBjR1STKEmk5I4axWdIv0W7fX_8zXbtA0Cg,413
3
+ ogc/na/annotate_schema.py,sha256=1p-XZkIjzWaW1P1LYM093C8XYN2zhUpMlWbZ1n2N9cQ,42635
4
4
  ogc/na/domain_config.py,sha256=ORzITa1rTrD1MQdpWYrIVW5SwSa9lJd3hnyHIxNgiIU,13947
5
5
  ogc/na/download.py,sha256=2afrLyl4WsAlxkCgXsl47fs9mNKfDmhVpeT2iwNSoq0,3354
6
+ ogc/na/exceptions.py,sha256=cwvnq79ih90T9lfwJww0zOx_QwuICaUvlo3Mc8m8ouA,85
6
7
  ogc/na/gsp.py,sha256=KGa2G9i8kPefYTHNPUDoXnNyF7Tiwt8K__Ew_Qa7eeg,6048
7
- ogc/na/ingest_json.py,sha256=Vcf1WyUQv3N_fUNGd1Npq88gkOg3uJFj1BHXdq7lkHE,35630
8
+ ogc/na/ingest_json.py,sha256=OUA9IfSpBbwE6bNE2od64iMzdEg-Q4h5iyowgJsn2M4,35659
8
9
  ogc/na/models.py,sha256=nGV8EALtXvmBtkUbu0FA4KOgwNUqQGWIDuMo7UGOKP8,652
9
10
  ogc/na/profile.py,sha256=T7nesbm7azF2ijF60UenJnQQKjIgJlnJ3pUbGT5nYgM,16511
10
11
  ogc/na/provenance.py,sha256=h7UtUb1wW_9MfEim0fjcqkHd0BYmpXqyE1ADzL9AH7I,5551
11
- ogc/na/update_vocabs.py,sha256=joLZxhpBJja5GvaBnt0aHQStKETOCIh5PotUxmJsOHs,18180
12
+ ogc/na/update_vocabs.py,sha256=m9Nd90Aplsm3m7cvNdiemPbnfq6Xq6rUDXGT1GBwDT4,18898
12
13
  ogc/na/util.py,sha256=Ztju3g1YuguUDbk4n2RJfCrl_IIzNAj7linfy24T6VA,12067
13
14
  ogc/na/validation.py,sha256=5xjHH55NZKM8HtUk8XgVzm8W5ZlZY00u_qsWfXK_8dM,3732
14
15
  ogc/na/input_filters/__init__.py,sha256=AhE7n_yECwxFKwOM3Jc0ft96TtF5i_Z-fHrS4HYOjaE,1179
15
16
  ogc/na/input_filters/csv.py,sha256=nFfB1XQF_QApcGGzMqEvzD_b3pBtCtsfUECsZ9UGE6s,2616
16
17
  ogc/na/input_filters/xml.py,sha256=9qYjp_w5JLInFM48zB15IYH9eTafjp1Aqd_8kfuW3aA,2074
17
- ogc_na-0.3.51.dist-info/METADATA,sha256=G0WhEyLCwCgNIdvIqo4pQap__Yaftecxp-qt2yb82gY,3829
18
- ogc_na-0.3.51.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
19
- ogc_na-0.3.51.dist-info/top_level.txt,sha256=Kvy3KhzcIhNPT4_nZuJCmS946ptRr_MDyU4IIhZJhCY,4
20
- ogc_na-0.3.51.dist-info/RECORD,,
18
+ ogc_na-0.3.53.dist-info/METADATA,sha256=r7CUFV_8_TNhVFYmwbgVbGdFhMqiHzDLb4XsJXbB-Pg,3829
19
+ ogc_na-0.3.53.dist-info/WHEEL,sha256=5Mi1sN9lKoFv_gxcPtisEVrJZihrm_beibeg5R6xb4I,91
20
+ ogc_na-0.3.53.dist-info/top_level.txt,sha256=Kvy3KhzcIhNPT4_nZuJCmS946ptRr_MDyU4IIhZJhCY,4
21
+ ogc_na-0.3.53.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (72.2.0)
2
+ Generator: setuptools (75.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5