X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=htsworkflow.git;a=blobdiff_plain;f=htsworkflow%2Fsubmission%2Fencoded.py;h=1228d387f015a39a9da12c8ad5ca296d218c68de;hp=f113bebd36121d5e403754caeb236e61697fcb88;hb=dd49302bb6f8b2503cc8c9b7151ed852858e10a1;hpb=0e0642fab3145125104de151aee62a506dbc9904 diff --git a/htsworkflow/submission/encoded.py b/htsworkflow/submission/encoded.py index f113beb..1228d38 100644 --- a/htsworkflow/submission/encoded.py +++ b/htsworkflow/submission/encoded.py @@ -217,7 +217,7 @@ class ENCODED: def get_schema_url(self, obj): obj_type = self.get_object_type(obj) if obj_type: - return self.prepare_url(ENCODED_SCHEMA_ROOT + obj_type + '.json') + return self.prepare_url(ENCODED_SCHEMA_ROOT + obj_type + '.json') + '#' def _is_encoded_object(self, obj): '''Test to see if an object is a JSON-LD object @@ -277,6 +277,28 @@ class ENCODED: url = urlunparse(url.values()) return url + def search_jsonld(self, term, **kwargs): + '''Send search request to ENCODED + ''' + url = self.prepare_url('/search/') + result = self.get_json(url, searchTerm=term, **kwargs) + self.convert_search_to_jsonld(result) + return result + + def convert_search_to_jsonld(self, result): + '''Add the context to search result + + Also remove hard to handle nested attributes + e.g. remove object.term when we have no id + ''' + graph = result['@graph'] + for i, obj in enumerate(graph): + # suppress nested attributes + graph[i] = {k: v for k, v in obj.items() if '.' not in k} + + self.add_jsonld_context(result, self.prepare_url(result['@id'])) + return result + def validate(self, obj): obj_type = self.get_object_type(obj) schema_url = self.get_schema_url(obj)