code: def query(self, *args, **kwargs):
          
          context = str(self.context)
          request_url = build_url_endpoint(self.ENDPOINT, context)
          request_params = dict(self.request_params)
  
          if args:
              request_params['query'] = ' '.join([str(i) for i in args])
  
          for field, value in kwargs.items():
              if field not in self.FIELDS_QUERY:
                  raise UrlSyntaxError(
                      'Field query %s specified but there is no such field query for this route. Valid field queries for this route are: %s' % (
                          str(field), ', '.join(self.FIELDS_QUERY)
                      )
                  )
              request_params['query.%s' % field.replace('_', '-')] = value
  
          return self.__class__(request_url, request_params, context, self.etiquette)
docs: This method retrieve an iterable object that implements the method
          __iter__. The arguments given will compose the parameters in the
          request url.
  
          This method can be used compounded and recursively with query, filter,
          order, sort and facet methods.
  
          args: strings (String)
  
          kwargs: valid FIELDS_QUERY arguments.
  
          return: iterable object of Works metadata
  
          Example:
              >>> from crossref.restful import Works
              >>> works = Works()
              >>> query = works.query('Zika Virus')
              >>> query.url
              'https://api.crossref.org/works?query=Zika+Virus'
              >>> for item in query:
              ...     print(item['title'])
              ...
              ['Zika Virus']
              ['Zika virus disease']
              ['Zika Virus: Laboratory Diagnosis']
              ['Spread of Zika virus disease']
              ['Carditis in Zika Virus Infection']
              ['Understanding Zika virus']
              ['Zika Virus: History and Infectology']
              ...