code: def GetKnowledgeBase(rdf_client_obj, allow_uninitialized=False):
    
    if not allow_uninitialized:
      if rdf_client_obj is None:
        raise artifact_utils.KnowledgeBaseUninitializedError(
            "No client snapshot given.")
      if rdf_client_obj.knowledge_base is None:
        raise artifact_utils.KnowledgeBaseUninitializedError(
            "KnowledgeBase empty for %s." % rdf_client_obj.client_id)
      kb = rdf_client_obj.knowledge_base
      if not kb.os:
        raise artifact_utils.KnowledgeBaseAttributesMissingError(
            "KnowledgeBase missing OS for %s. Knowledgebase content: %s" %
            (rdf_client_obj.client_id, kb))
    if rdf_client_obj is None or rdf_client_obj.knowledge_base is None:
      return rdf_client.KnowledgeBase()
  
    version = rdf_client_obj.os_version.split(".")
    kb = rdf_client_obj.knowledge_base
    try:
      kb.os_major_version = int(version[0])
      if len(version) >= 1:
        kb.os_minor_version = int(version[1])
    except ValueError:
      pass
  
    return kb
docs: Returns a knowledgebase from an rdf client object.