class Tweet(neomodel.StructuredNode): id_str = neomodel.StringProperty(unique_index=True, required=True) created_at = neomodel.DateTimeProperty(required=False) modified = neomodel.DateTimeProperty(required=False) retweeted = neomodel.BooleanProperty(required=False) retweet_id_str = neomodel.StringProperty(required=False, default='') reply_id_str = neomodel.StringProperty(required=False, default='') quote_id_str = neomodel.StringProperty(required=False, default='') mention_ids_str = neomodel.ArrayProperty(required=False, default=[]) text = neomodel.StringProperty(required=False) coordinates = neomodel.ArrayProperty(required=False, default=[]) lang = neomodel.StringProperty(required=False) features = neomodel.JSONProperty(required=False, default={}) sentiment_polarity = neomodel.FloatProperty(required=False) sentiment_subjectivity = neomodel.FloatProperty(required=False) retweets = neomodel.RelationshipTo('Tweet', 'RETWEETS') mentions = neomodel.RelationshipTo('User', 'MENTIONS') replies = neomodel.RelationshipTo('Tweet', 'REPLIES') tags = neomodel.RelationshipTo('Hashtag', 'TAGS') contains = neomodel.RelationshipTo('Link', 'CONTAINS') quotes = neomodel.Relationship('Tweet', 'QUOTES') tweet_about = neomodel.RelationshipTo('Company', 'TWEETS') def save(self): self.modified = datetime.datetime.now() super(Tweet, self).save() return self
class order(nm.StructuredNode): price = nm.FloatProperty() shares = nm.FloatProperty() date = nm.DateTimeProperty(default_now=True) if shares.__gt__ == 0: side = 'buy' else: side = 'sell' company = nm.RelationshipTo('Company', side.upper())
class News(neomodel.StructuredNode): headline = neomodel.StringProperty(unique_index=True, required=True) url = neomodel.StringProperty(required=False) publisher = neomodel.StringProperty(required=False) created_at = neomodel.DateTimeProperty(required=False) keywords = neomodel.ArrayProperty(neomodel.StringProperty(), required=False) score = neomodel.FloatProperty(required=False) cites = neomodel.RelationshipTo('Company', 'CITES')
class Event(neomodel.StructuredNode): name = neomodel.StringProperty(unique_index=True, required=True) weighting = neomodel.FloatProperty(required=False) modified = neomodel.DateTimeProperty(required=False) related_to = neomodel.RelationshipTo('Company', 'ABOUT') tweet_from = neomodel.RelationshipFrom('Tweet', 'TWEET_FROM') cited_from = neomodel.RelationshipFrom('News', 'CITE_FROM') def save(self): self.modified = datetime.datetime.now() super(Event, self).save() return self
class BaseEntity(neomodel.StructuredNode): name = neomodel.StringProperty(unique_index=True) variants = neomodel.JSONProperty() best_variant = neomodel.StringProperty() count = neomodel.IntegerProperty(default=1) weight = neomodel.FloatProperty(default=0) create_at = neomodel.DateTimeFormatProperty(format=DATETIME_FORMAT, default_now=True) # GOD attributes: relation from head (self) to Tail (other) used_for = neomodel.RelationshipTo(neomodel.StructuredNode, 'used_for', model=UsedFor) part_of = neomodel.RelationshipTo(neomodel.StructuredNode, 'part_of', model=PartOf) feature_of = neomodel.RelationshipTo(neomodel.StructuredNode, 'feature_of', model=FeatureOf) compare = neomodel.RelationshipTo(neomodel.StructuredNode, 'compare', model=Compare) hyponym_of = neomodel.RelationshipTo(neomodel.StructuredNode, 'hyponym_of', model=HyponymOf) evaluate_for = neomodel.RelationshipTo(neomodel.StructuredNode, 'evaluate_for', model=EvaluateFor) refer_to = neomodel.RelationshipTo(neomodel.StructuredNode, 'refer_to', model=ReferTo) appear_in = neomodel.RelationshipTo(neomodel.StructuredNode, 'appear_in', model=AppearIn) author_of = neomodel.RelationshipTo(neomodel.StructuredNode, 'author_of', model=AuthorOf) affiliate_with = neomodel.RelationshipTo(neomodel.StructuredNode, 'affiliate_with', model=AffiliateWith) cite = neomodel.RelationshipTo(neomodel.StructuredNode, 'cite', model=Cite) related_to = neomodel.RelationshipTo(neomodel.StructuredNode, 'related_to', model=RelatedTo)
class Company(neomodel.StructuredNode): id_str = neomodel.StringProperty(unique_index=True, required=True) name = neomodel.StringProperty(required=False) created_at = neomodel.DateTimeProperty(required=False) modified = neomodel.DateTimeProperty(required=False) description = neomodel.StringProperty(required=False) brand_score = neomodel.FloatProperty(required=False) tweet_score = neomodel.FloatProperty(required=False) news_score = neomodel.FloatProperty(required=False) stock_price = neomodel.FloatProperty(required=False) stock_change = neomodel.FloatProperty(required=False) mkt_cap = neomodel.FloatProperty(required=False) def save(self): self.modified = datetime.datetime.now() super(Company, self).save() return self
class UltraTechnicalPerson(SuperTechnicalPerson): ultraness = neomodel.FloatProperty(default=3.1415928)
class SuperTechnicalPerson(TechnicalPerson): superness = neomodel.FloatProperty(default=1.0)
class RandomPerson(BasePerson): randomness = neomodel.FloatProperty(default=random.random)
class Requires(nm.StructuredRel): quant = nm.FloatProperty() unit = nm.StringProperty()
class ComponentRel(nm.StructuredRel): updated = nm.DateTimeProperty(default_now=True) rating = nm.IntegerProperty() relevancy = nm.IntegerProperty() weight = nm.FloatProperty()
class StakeRel(nm.StructuredRel): updated = nm.DateTimeProperty(default_now=True) shareholding_ratio = nm.FloatProperty()
class BaseRelation(neomodel.StructuredRel): count = neomodel.IntegerProperty(default=1) weight = neomodel.FloatProperty(default=0) create_at = neomodel.DateTimeFormatProperty(format=DATETIME_FORMAT, default_now=True) flag_violation = neomodel.BooleanProperty(default=False) from_papers = neomodel.ArrayProperty(neomodel.IntegerProperty(), default=[])
class NewRelationship(neomodel.StructuredRel): profile_match_factor = neomodel.FloatProperty()
class ExtendedPersonalRelationship(PersonalRelationship): relationship_strength = neomodel.FloatProperty(default=random.random)