<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_semantic_data(self, path_as_list):
 """ Retrieves an entry of the semantic data. :param list path_as_list: The path in the vividict to retrieve the value from :return: """

        target_dict = self.semantic_data
        for path_element in path_as_list:
            if path_element in target_dict:
                target_dict = target_dict[path_element]
            else:
                raise KeyError("The state with name {1} and id {2} holds no semantic data with path {0}."
                               "".format(path_as_list[:path_as_list.index(path_element) + 1], self.name, self.state_id))

        return target_dict