Source code for kindred.Relation


import kindred
import six

[docs]class Relation: """ Describes relationship between entities (including relation type and argument names if applicable). :ivar relationType: Type of relation :ivar entities: List of entities in relation :ivar argNames: Names of relation argument associated with each entity :ivar probability: Optional probability for predicted relations :ivar sourceRelationID: Relation ID used in source document """
[docs] def __init__(self,relationType=None,entities=None,argNames=None,probability=None,sourceRelationID=None): """ Constructor for Relation class :param relationType: Type of relation :param entities: List of entities in relation :param argNames: Names of relation argument associated with each entity :param probability: Optional probability for predicted relations :param sourceRelationID: Relation ID used in source document :type relationType: str :type entities: list of kindred.Entity :type argNames: list of str :type probability: float :type sourceRelationID: str """ if entities is None: entities = [] assert relationType is None or isinstance(relationType, six.string_types), "relationType must be a string" self.relationType = relationType assert isinstance(entities,list), "entities must be a list of kindred.Entity" for entity in entities: assert isinstance(entity, kindred.Entity), "entities must be a list of kindred.Entity" self.entities = entities if argNames == None: self.argNames = None else: assert len(argNames) == len(entities) self.argNames = [ str(a) for a in argNames ] if not probability is None: assert isinstance(probability, float) self.probability = probability self.sourceRelationID = sourceRelationID
def __eq__(self, other): """Override the default Equals behavior""" if isinstance(other, self.__class__): return self.__dict__ == other.__dict__ return False def __ne__(self, other): """Define a non-equality test""" return not self.__eq__(other) def __str__(self): return "<Relation %s %s %s>" % (self.relationType,str(self.entities),str(self.argNames)) def __repr__(self): return self.__str__() def __hash__(self): if self.argNames is None: return hash((self.relationType,tuple(self.entities),self.probability)) else: return hash((self.relationType,tuple(self.entities),tuple(self.argNames),self.probability))