airr-community / airr-standards

AIRR Community Data Standards
https://docs.airr-community.org
Creative Commons Attribution 4.0 International
35 stars 23 forks source link

Can we deprecate the filter query operators `is` and `not`? #619

Closed bussec closed 6 months ago

bussec commented 2 years ago

The filter query operators is and not are rather confusing as they mean "is missing" and "is not missing", respectively, which is rather counterintuitive. Also, not would by default be considered to be the logical NOT operator.

As these operators are only considered to be aliases for the is missing and is not missing operators, I was wondering whether we could just deprecate them. I am aware that they were introduced for compatibility with the GDC, but given that their endpoints and data structure is different from ours, supporting all of their operators might not be the most critical thing to do.

schristley commented 2 years ago

The filter query operators is and not are rather confusing as they mean "is missing" and "is not missing", respectively, which is rather counterintuitive. Also, not would by default be considered to be the logical NOT operator.

As these operators are only considered to be aliases for the is missing and is not missing operators, I was wondering whether we could just deprecate them. I am aware that they were introduced for compatibility with the GDC, but given that their endpoints and data structure is different from ours, supporting all of their operators might not be the most critical thing to do.

is and not are the original operators then @bcorrie made the similar statement that they weren't intuitive so we added the is missing and is not missing operators. I was hesitant to remove the orignal operators, not sure why exactly, maybe we had already published the paper? Or just wanting to keep compatibility... I've no real opinion on deprecation, at least implementing the alias should be simple.

Also, not would by default be considered to be the logical NOT operator.

Yeah, an unfortunate design by GDC. We put a comment in the docs to help explain, "Note that the not operator is different from a logical NOT operator, and the logical NOT is not needed as the other operators provide negation."

bcorrie commented 2 years ago

I don't object to deprecating them, but I would suggest doing that for the v2.0 release (not v1.2) as it definitely breaks backwards compatibility...

bcorrie commented 6 months ago

@schristley any objections to doing this for v2.0 release? This breaks compatibility so this is a good time to do it. We would just need to update the documentation for this since there is no way to deprecate an operator in the specification.

This has no impact on the iReceptor Gateway since we don't use these operators. We would need to "unimplement them" but I suppose there is no rule that you can't have extra operators and still be compliant, so maybe we don't HAVE to do anything.

schristley commented 6 months ago

@schristley any objections to doing this for v2.0 release? This breaks compatibility so this is a good time to do it. We would just need to update the documentation for this since there is no way to deprecate an operator in the specification.

no objection.

bcorrie commented 6 months ago

Made these changes (removed them from the table). https://github.com/airr-community/airr-standards/pull/752/commits/972949b9e06c2003baa628020dadeaea6d960380

Added release notes and added this change so we don't lose track of it. https://github.com/airr-community/airr-standards/pull/752/commits/cf084b799a04e1cead1f8931ff2351cee3dfd22d

I think this can be closed...