Cumbersome usage of terminology
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 30/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- python
- Domain
- developer-experience
Research direction
Start by tracing the Document and Section entry points shown in the examples: repository, get_terminology_equivalent, merge, and Section construction. Compare the whole-document and standalone-Section workflows, then clarify the intended API and acceptance criteria for making terminology usage less cumbersome.
Written by the indexing model from the issue text.
Description
While preparing the new documentation I stumbled upon the functionality of terminology for Document and Section objects. Let me demonstrate the cumbersome aspects of the repository functionality for integrating terminologies via the following example (performed in odml v1.2):
import odml
# define the G-Node repo
repo_doc = 'http://portal.g-node.org/odml/terminologies/v1.0/terminologies.xml'
# doc1 should be the Document I would like to create by using terminologies of the G-Node repo
doc1 = odml.Document('WantedDoc', repository=repo_doc)
# doc1 is now an empty Document with the G-Node repository
print(doc1)
# output: None by WantedDoc (0 sections)>
# to actually use the terminologies provided via the repository,
# to include an Event section with the provided terminology
# I now have to generate secondary objects
# A: for example, via another Document
doc2 = doc1.get_terminology_equivalent()
# output: Document containing all Sections that are provided as terminologies via the G-Node repo
# <Doc None by None (54 sections)>
# (note that this will currently give a lot of warnings,
# since the terminologies are not yet updated to the recent changes of odML)
doc1.append(odml.Section('MyEvent1', type='whatever'))
doc1.sections['MyEvent1'].merge(doc2.sections['Event'])
# B: via creating and appending a Section which has a type equivalent terminology in the G-Node repo
doc1.append(odml.Section('MyEvent2', type='event'))
ev_sec_a = doc1.sections['MyEvent2'].get_terminology_equivalent()
# output: first Section (with children) occurring in the term. of the G-Node repo with Section type 'event'
# <Section Event[event] (0)>
doc1.sections['MyEvent2'].merge(ev_sec_a)
# NOTE:
# that for A the Section type is irrelevant, because the user actively selects a Section
# from the complete terminology tree of the given repo
# for B, the terminology of the wanted Section is AUTOMATICALLY extracted from the repo
# by matching the Section types
# B also works for a standalone Section, but defining a Section specific repo is only indirectly possible:
repo_sec = 'http://portal.g-node.org/odml/terminologies/v1.0/event/event.xml'
# my_ev_sec = odml.Section('MyEvent3', type='event', repository=repo_sec)
# -> will give a TypeError: __init__() got an unexpected keyword argument 'repository'
# but the following is possible:
my_ev_sec = odml.Section('MyEvent3', type='event')
my_ev_sec.repository = repo_sec
# and then follow B to use the repository functionality
ev_sec_b = my_ev_sec.get_terminology_equivalent()
doc1.append(ev_sec_b.clone())
# will append a clone of the Section with the extracted terminology <Section Event[event] (0)> to doc1
- Dominant language
- Python
- Stars
- 25
- Forks
- 30
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from G-Node/python-odml
-
RDF
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
G-Node/python-odml#172 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 58/100
G-Node/python-odml#420 ·
-
Sparse file output Open
Difficulty 4/5 3-5 days Newbie friendliness 35/100
G-Node/python-odml#418 ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
G-Node/python-odml#417 · 8 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
G-Node/python-odml#406 ·
All issues in G-Node/python-odml
Similar issues
-
Add: hunch Open
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
AbdelStark/awesome-typesafe#104 ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
DiamondLightSource/dodal#2211 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
openml/openml-python#1749 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
sipyourdrink-ltd/bernstein#6191 ·