Skip to content

Commit

Permalink
urnresolver (#13): v1.2.3 added -?? (reverse search) and --urn-explan…
Browse files Browse the repository at this point in the history
…andum-list
  • Loading branch information
fititnt committed Apr 28, 2021
1 parent e79b8b6 commit b3b0baa
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 10 deletions.
86 changes: 76 additions & 10 deletions hxlm/core/bin/urnresolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,29 @@
# hxlselect --query valid_vocab+default=+v_pcode \
# "$(urnresolver urn:data:xz:hxl:standard:core:hashtag)"
#
# ## Explain how a query was resolved (--?)
# urnresolver --? urn:data:xz:hxl:standard:core:attribute
#
# ## Know URN list (without complex/recursive resolving)
# urnresolver --urn-list
#
# ## Same as --urn-list, but filter results (accept multiple)
# urnresolver --urn-list-filter un --urn-list-filter br

#
# ## Same as --urn-list-pattern, but python regexes
# urnresolver --urn-list-pattern "un|br" --urn-list-pattern "b"
#
# ## Resolve something know at random
# urnresolver --urn-list | sort -R | urnresolver
#
# ## Explain how a query was resolved (-?)
# urnresolver -? urn:data:xz:hxl:standard:core:attribute
#
# ## List itens that marked thenselves as reference on a
# ## subject
# urnresolver --urn-explanandum-list
#
# ## Print who is marked explicity as reference to something
# urnresolver -?? +v_iso15924
# urnresolver -?? country+code+v_iso2
#
# DESCRIPTION: urnresolver uses hxlm.core to resolve Uniform Resource Name
# (URI) to Uniform Resource Identifier (URI)
#
Expand All @@ -46,16 +54,18 @@
# COMPANY: Etica.AI
# LICENSE: Public Domain dedication
# SPDX-License-Identifier: Unlicense
# VERSION: v1.2.2
# VERSION: v1.2.3
# CREATED: 2021-03-05 15:37 UTC v0.7.3 started (based on hxl2example)
# REVISION: 2021-04-20 06:21 UTC v1.1.0 added --urn-list
# 2021-04-20 07:27 UTC v1.2.0 added --urn-list-filter &
# --urn-list-pattern
# 2021-04-26 01:41 UTC v1.2.1 added --version
# 2021-04-28 06:13 UTC v1.2.2 added --? (explain results)
# 2021-04-28 06:13 UTC v1.2.2 added -? (details about URN)
# 2021-04-28 07:28 UTC v1.2.3 added -?? (reverse search) and
# --urn-explanandum-list
# ==============================================================================

__version__ = "v1.2.2"
__version__ = "v1.2.3"

# ./hxlm/core/bin/urnresolver.py urn:data:un:locode
# echo $(./hxlm/core/bin/urnresolver.py urn:data:un:locode)
Expand Down Expand Up @@ -182,14 +192,23 @@ def make_args_urnresolver(self):
parser.add_argument(
'--explanandum',
'-?',
'--?',
help='Print explanation information about a URN',
metavar='explanandum',
action='store_const',
const=True,
default=False
)

parser.add_argument(
'--referens',
'-??',
help='Print resources are marked as explanation for a tag. ' +
'For example "urnresolver -?? +v_iso15924"',
metavar='referens',
type=str,
action='append'
)

parser.add_argument(
'--version',
help='Show version and exit',
Expand Down Expand Up @@ -242,6 +261,16 @@ def make_args_urnresolver(self):
default=False
)

parser.add_argument(
'--urn-explanandum-list',
help='List all explanandum attributes [urn<TAB>expitem]'
' (hints for what a dataset explicity mark itsef as reference)',
metavar='urn_explanandum_list',
action='store_const',
const=True,
default=False
)

parser.add_argument(
'--urn-list-filter',
help='List know URNs by filter (simple string match)',
Expand Down Expand Up @@ -376,7 +405,7 @@ def execute_cli(self, args,
'local urn references'
)

# If user is not asking to tisable load 'urnresolver-default.urn.yml'
# If user is not asking to disable load 'urnresolver-default.urn.yml'
if not args.no_urn_vendor_defaults:
urnrslvr_def = HXLM_ROOT + '/core/bin/' + \
'urnresolver-default.urn.yml'
Expand All @@ -395,7 +424,44 @@ def execute_cli(self, args,
print('[DDDS-NAPTR-Public[not-implemented]]')
return self.EXIT_OK

# urnresolver --urn-list-filter un --urn-list-filter br
# urnresolver --! +v_iso15924
if 'referens' in args and args.referens:
# print('referens', args.referens)
for item in urnrslr_options:
# print(item)
# if 'explanandum' in item and item.explanandum and \
if 'explanandum' in item and item['explanandum'] and \
len(item['explanandum']) > 0:

# TODO: implement AND (this is an OR)
for exitem in item['explanandum']:
if exitem in args.referens:
print(item['urn'])
# print(item['urn'] + "\t" + exitem)
# Inverse:
# print(exitem + "\t" + item['urn'])
# print(item)

return self.EXIT_OK

# urnresolver --urn-explanandum-list
if 'urn_explanandum_list' in args and args.urn_explanandum_list:
# print('urn_explanandum_list', args.urn_explanandum_list)
for item in urnrslr_options:
# print(item)
# if 'explanandum' in item and item.explanandum and \
if 'explanandum' in item and item['explanandum'] and \
len(item['explanandum']) > 0:

for exitem in item['explanandum']:
print(item['urn'] + "\t" + exitem)
# Inverse:
# print(exitem + "\t" + item['urn'])
# print(item)

return self.EXIT_OK

# urnresolver --urn-list-filter un --urn-list-filter br
if 'urn_list_filter' in args and args.urn_list_filter:
# print('urn_list_filter', args.urn_list_filter)
if urnrslr_options and len(urnrslr_options) > 0:
Expand Down
11 changes: 11 additions & 0 deletions ontologia/urn/defallo.urn.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
# - https://en.wiktionary.org/wiki/descriptio#Latin
# - "explānandum"
# - https://en.wiktionary.org/wiki/explano#Latin
# - "referens"
# - https://en.wiktionary.org/wiki/referens#Latin
# - https://en.wiktionary.org/wiki/reference#English


# TODO: Maybe even draft an bash completion based on URNs already listed on
Expand Down Expand Up @@ -189,11 +192,19 @@
- https://docs.google.com/spreadsheets/d/1AvYEV8a-X9gZrxrPH0wPgoGHO8ENxWJuVA3z1RpcC5k/edit#gid=530571590

- urn: "urn:data:xz:eticaai:ontologia:codicem:linguam"
explanandum:
- +v_iso15924
fontem:
- ontologia/codicem/codicem.linguam.hxl.csv
- https://proxy.hxlstandard.org/data.csv?dest=data_view&url=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F12k4BWqq5c3mV9ihQscPIwtuDa_QRB-iFohO7dXSSptI%2Fedit%23gid%3D0

- urn: "urn:data:xz:eticaai:ontologia:codicem:locum"
explanandum:
- country+code+v_iso2
- country+code+v_iso3
- +v_hrinfo_country
- +v_reliefweb # Do v_reliefweb is ONLY about countries? Or is more generic?
- country+code+v_reliefweb
fontem:
- ontologia/codicem/codicem.locum.hxl.csv
- https://docs.google.com/spreadsheets/d/1l5Pev8zdVRS0EOPog36eipGCrckbrPC_74xhS9JRaM0/edit#gid=1260650845
Expand Down

0 comments on commit b3b0baa

Please sign in to comment.