def get_values_by_query(self, query, tags):
        """
        Gets the values of a set of tags satisfying a given query.
        Returns them as a dictionary (hash) keyed on object ID.
        The values in the dictionary are simple objects with each tag
        value in the object's dictionary (__dict__).

        query      is a unicode string representing a valid Fluidinfo query.
                   e.g. 'has njr/rating'

        tags       is a list (or tuple) containing the tags whose values are
                   required.

        Example:

            db = Fluidinfo()
            tag_by_query(db, u'has njr/rating < 3', ('fluiddb/about',))

        NOTE: Unlike in much of the rest of fish.py, tags need to be full paths
        without a leading slash.

        NOTE: All strings must be (and will be) unicode.

        """
        maxTextSize = 1024
        (v, r) = self.call(u'GET', u'/values', None, {u'query': query,
                                                      u'tag': tags})
        assert_status(v, STATUS.OK)
        H = r[u'results'][u'id']
        results = []
        for id in H:
            o = O()
            o.id = id
            for tag in tags:
                if tag in H[id]:
                    try:
                        if tag == u'fluiddb/about':
                            o.about = H[id][tag][u'value']
                        else:
                            o.tags[tag] = H[id][tag][u'value']
                            o.types[tag] = None
                    except __HOLE__:
                        size = H[id][tag][u'size']
                        mime = H[id][tag][u'value-type']
                        if (mime.startswith(u'text')
                                and size < maxTextSize):
                            o.tags[tag] = self.get_tag_value_by_about(id,
                                                                u'/%s' % tag)
                        else:
                            o.tags[tag] = (u'%s value of size %d bytes' % (mime,
                                                                         size))
                        o.types[tag] = mime
            results.append(o)
        return results      # hash of objects, keyed on ID, with attributes
                            # corresponding to tags, inc id.
dataset/ETHPy150Open njr0/fish/fish/fishlib.py/Fluidinfo.get_values_by_query