-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expressing "Out of Scope" where the source concept is out of scope for the target vocabulary #245
Comments
I think this request makes sense - it speaks to the problem that people want to declare their mapping sets as in some sense “complete”. Say you want to align OMIM and NCIT, you may want to say: NCIT:ultrasoundDevice is out of scope. Unfortunately, due to the nature of the standard, it will be a bit of a hack to include this in SSSOM, especially the arbitraryness of defining a mapping predicate. I am wondering now what is the cleanest way. I see two paths:
|
I guess this would look like:
👎 If you consume this and just look at the mapping columns, this doesn't tell you for what semantic space
I guess this would look like:
👎 I think this has the same issue as above, just using different vocabulary for the predicate and objject Alternate proposalIf you want to say something is out of scope, then wouldn't it make more sense to have a relationship like
This has the advantage of being directly interpretable from the atomic SPO triple |
The scenario is this: Source 1:
Source 2:
Note that source 1 does not correspond to any particular ontology - it can be a value set (i.e. a list of terms, from multiple ontologies). source 2 is about fruits. So the question is, what do to with @cthoyt in light of this, how does your suggestion differ from my Option 2 above? EDIT: this has been updated for clarity in light of @cthoyt comments below. |
@matentzn I'm sorry but it's super confusing to follow talking about ontologies and examples with letters. For the benefit of the discussion, we should try and be a bit more concrete (e.g., I updated my last comment to have explicit examples of rows of SSSOM documents). Also I don't think there's any value in having a name for ontology That being said, I don't think that you should have to look into the Further, if there's no mapping from a local unique identifier |
If your Option 2 is The first says prefix1:A is out of scope for what you call "SubjectSource" (but I think it should be for ObjectSource, unless I'm totally backwards; I'm assuming we are trying to map prefix1:A into the prefix2 list of of terms). And it isn't clear what the object_id of sssom:noTermFound represents, though I can guess it represents a reason for the out of scope declaration (ObjectTermIsOutOfScopeForTargetSourceForReason). But that's redundant information anyway—if it's out of scope there should always be no term found. The second one says prefix1:A is out of scope with respect to the explicit target, which is identified by its prefix in the bioregistry. This meaning is immediate and transparent, at least it seems that way to me to me. It is true that if you have declared a single target in the header, then the person/software who is reading this statement could go back and retrieve the target ID, or more likely just not care about that detail. But I agree that should not be required. But what if you are mapping from source prefix1:A and the terms are being mapped to targets prefix2 and prefix3 (etc.)? Now you don't know for which object the statement is being made, so we need to specify that in the triple. Arguably we should rule this situation out by saying if there are multiple targets, the OutOfScope relationship must apply to all of them; otherwise you get in the odd situation of having to declare outOfScope relations to all your targets individually. (Mapping to multiple targets is a common use case, so I sure hope it isn't illegal in SSSOM.) Re @cthoyt's comments:
I didn't really follow this, even if I make the last word 'inconsistency'. In fact it seems to make an opposing argument to the post with the Alternate Proposal, which was the one I liked. I guess 'prefix1:A outOfScope prefix2' is an anti-mapping, and so it makes sense for completeness to be able to say there is no relation between prefix1:A and prefix2. (The meta analog of a disjoint relationship…)
Why is 'bioregistry:prefix2' any clearer than 'prefix2'? We didn't say 'bioregistry:prefix1'. If we need it for one we need it for the other.
I think I'm on the same page, except that prefixes by definition requires the context to define them, and all relations must be interpreted within respect to their appropriate context. But I think we agree here. |
Thank you @cthoyt and @graybeal for your comments! First of all, saying "ontology" is indeed too restrictive for subject and object sources; they are semantic spaces. While you @cthoyt strive towards making a prefix equal to their respective semantic space, we should still stay explicit about it and say "semantic space" when we talk to each other. Here was your suggestion @cthoyt :
This is actually a good more explicit alternative to using sssom:noTermFound or some such. We could use this logic to fulfill @tompollard even more elegantly, by doing this:
I like the idea, thoughts? |
I'm sorry in advance for (1) not following the issue template and (2) using incorrect language when referring to SSSOM concepts. I am new to this and still getting familiar with correct terminology etc.
We (well, specifically @a-chahin) are creating SSSOM-formatted tables to map terms in the MIMIC-IV database to common vocabularies. For example, the following pull request maps MIMIC-IV lab results to LOINC: MIT-LCP/mimic-code#1418
@matentzn kindly reviewed this work and gave helpful advice on steps towards SSSOM compliance. During review, the following question was raised. For background, see: MIT-LCP/mimic-code#1418 (comment).
Question
Our source list includes a lot of junk terms that just don't make sense to map to LOINC.
Despite the source terms being meaningless, it is important for us to maintain a complete list of them in the mapping file. The question is how best to do this.
In cases where no target term is found, @matentzn suggests that standard practice is to define the predicate_id (e.g
skos:exactMatch
) and then add asssom:NoTermFound
placeholder.NoTermFound
is perhaps true in our case, but something likesssom:OutOfScope
would be more informative. This makes it clear that not only was no target found but that there is no desire to create a mapping.We would appreciate your thoughts on this!
The text was updated successfully, but these errors were encountered: