docs: def conv_json(self, uri_format="sparql_uri", add_ids=False):
          """ converts the class to a json compatable python dictionary
  
          Args:
              uri_format('sparql_uri','pyuri'): The format that uri values will
                      be returned
  
          Returns:
              dict: a json compatabile python dictionary
          """
          def convert_item(ivalue):
              """ converts an idividual value to a json value
  
              Args:
                  ivalue: value of the item to convert
  
              Returns:
                  JSON serializable value
              """
              nvalue = ivalue
              if isinstance(ivalue, BaseRdfDataType):
                  if ivalue.type == 'uri':
                      if ivalue.startswith("pyuri") and uri_format == "pyuri":
                          nvalue = getattr(ivalue, "sparql")
                      else:
                          nvalue = getattr(ivalue, uri_format)
                  else:
                      nvalue = ivalue.to_json
              elif isinstance(ivalue, RdfClassBase):
                  if ivalue.subject.type == "uri":
                      nvalue = ivalue.conv_json(uri_format, add_ids)
                  elif ivalue.subject.type == "bnode":
                      nvalue = ivalue.conv_json(uri_format, add_ids)
              elif isinstance(ivalue, list):
                  nvalue = []
                  for item in ivalue:
                      temp = convert_item(item)
                      nvalue.append(temp)
              return nvalue
  
          rtn_val = {key: convert_item(value) for key, value in self.items()}
          #pdb.set_trace()
          if add_ids:
  
              if self.subject.type == 'uri':
                  rtn_val['uri'] = self.subject.sparql_uri
                  rtn_val['id'] = sha1(rtn_val['uri'].encode()).hexdigest()
          #return {key: convert_item(value) for key, value in self.items()}
          return rtn_val