Comments (5)
I was drawn back to this issue by a recent use case which made me look at this in a different light.
What I have in mind is in between a search described here and the existence test
@sveinugu mentioned it also here
It would be a separate collections
endpoint (name to be debated) that can be queried with a level1 digest and property and return the list of level0 sequence collection that match
i.e.
/collections?names=4925cdbd780a71e332d13145141863c1
Would return all the collections with that ordered set of names that can be queried further on the collection endpoint or compared
We could extend the concept to the list endpoint that has been discuss in the past
/collections
would return the whole list.
This can be incredibly powerful because it enables both discovery of sequence collections in a given server and increased interoperability between servers:
- Increased discoverability because user can find out what sequence collection a server has available
- Increased interoperability because two services will likely have incompatible level 0 digest but will have compatible level1 digest (for names, sequences and lengths at least)
- Unable precomputed search as a service can allow search by
sorted_names_length_pairs
orsorted_sequences
or any other precomputed array digest.
from refget.
I think discussions on these search/existence/lookup-by-level1-digest are good things to look at next.
Probably don't make it into 1.0, but clear useful extensions for a 1.1 or something.
from refget.
I implemented a basic version of this here: https://seqcolapi.databio.org/docs#/Discovering%20data/attribute_search_list_collections__attribute___attribute_digest__get
Basically, you list collections with a given attribute like this:
/list/collections/{attribute}/{attribute_digest}
This can't ask a question of "is compatible with" but it can ask a question of whether a specific attribute is identical. So it's a bit weaker than I originally proposed, but still very useful and maybe solves the main use cases; also it becomes more powerful as additional custom attributes are added to enable particular searches. I think this is exactly what Tim proposed above.
from refget.
Here's what I've written that we could add to the specification under the /list
endpoint. I'm envisioning this as an endpoints lives underneath the generic list
endpoint.
Variant: List with filter
- Endpoint:
GET /list/:object_type/:attribute/:attribute_digest?page=:page&page_size=:page_size
(REQUIRED
) - Description: Lists identifiers for a given object type (e.g. collections), filtered to only those that have a specific attribute value. This endpoint provides a way to discover sequence collections with a certain attribute.
- Return value: The output format matches the the more general
/list
endpoint. It is simply filtered.
from refget.
I agree barring my comment on :object_type
which should be define as collections
for now.
I would also change the attribute_digest
to level1_value
or something similar to make it clear where the value is coming from.
I could also support single value attributes which would enable all kind of predefine searches.
Something like
GET /list/collections/:attribute/:level1_value?page=:page&page_size=:page_size
from refget.
Related Issues (20)
- Identifier construction: To prefix or not to prefix HOT 11
- Define what the service info will contain HOT 11
- Discussion on undigested attributes and sorted-name-length-pairs HOT 20
- RFC-8785 and refget compatibility HOT 1
- Alphabet as inherent property of a sequence collection HOT 2
- Reserved namespace policy for future extension of SeqCol HOT 1
- Terminology round 2 HOT 3
- Minimal and extended schemas proposal
- Should we prefix the digests that we return from seqcol? HOT 2
- How to store and represent and compare non collated single value attributes in a sequence collection HOT 9
- Identifier vs digest in the specs HOT 2
- List endpoint and pagination HOT 10
- Add sorted_sequences as recommended non-inherent attribute HOT 4
- Should lengths and names be required properties in every sequence collection ? HOT 13
- Documentation request- seqcol without sequences HOT 2
- Test suite?
- Use case: a digest for a collection of sequences HOT 4
- Revise decision record: sorted_sequences HOT 2
- New schema term: accessions
- Proposal: the attribute endpoint HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from refget.