Skip to content
Snippets Groups Projects
Commit 9251999b authored by dcz's avatar dcz
Browse files

unifier first models

parent e785df5b
Branches
Tags
No related merge requests found
from django.db import models
from meanings.models import LexicalUnit, Synset
class UnifiedLexicalUnitCluster(models.Model):
lexical_units = models.ManyToManyField(LexicalUnit, related_name='UnifiedLexicalUnitCluster')
def __str__(self):
return '%s: %s' % (self.opinion, ' + '.join([str(arg) for arg in self.sorted_arguments()]))
class UnifiedFrameStatus(models.Model):
status = models.CharField(max_length=20)
def __str__(self):
return self.status
class UnifiedFrame(models.Model):
unified_lexical_unit_cluster = models.ForeignKey(UnifiedLexicalUnitCluster, on_delete=models.PROTECT)
status = models.ForeignKey(UnifiedFrameStatus, on_delete=models.PROTECT)
arguments_count = models.PositiveIntegerField(null=False, default=0)
def sorted_arguments(self): # TODO: zaimplementowac wlasciwe sortowanie
return Argument.objects.filter(frame=self)
def __str__(self):
return '%s: %s' % (self.opinion, ' + '.join([str(arg) for arg in self.sorted_arguments()]))
class Argument(models.Model):
role = models.ForeignKey('ArgumentRole', on_delete=models.PROTECT)
predefined = models.ManyToManyField('PredefinedSelectionalPreference')
synsets = models.ManyToManyField(Synset)
relations = models.ManyToManyField('RelationalSelectionalPreference')
frame = models.ForeignKey(Frame, related_name='arguments', on_delete=models.PROTECT)
preferences_count = models.PositiveIntegerField(null=False, default=0)
def __str__(self):
return str(self.role)
class ArgumentRole(models.Model):
role = models.ForeignKey('SemanticRole', on_delete=models.PROTECT)
attribute = models.ForeignKey('RoleAttribute', null=True, on_delete=models.PROTECT)
def __str__(self):
if self.attribute is None:
return str(self.role)
else:
return '{}, {}'.format(str(self.role), str(self.attribute))
class SemanticRole(models.Model):
role = models.CharField(max_length=20)
color = models.CharField(max_length=11, null=True)
priority = models.PositiveIntegerField()
class Meta:
ordering = ['priority']
def __str__(self):
return self.role
class RoleAttribute(models.Model):
attribute = models.CharField(max_length=20)
gradient = models.CharField(max_length=10, null=True)
priority = models.PositiveIntegerField()
class Meta:
ordering = ['priority']
def __str__(self):
return self.attribute
class PredefinedSelectionalPreference(models.Model):
key = models.CharField(max_length=20, unique=True)
# name = TODO: wymaga lokalizacji
def __str__(self):
return self.key
class RelationalSelectionalPreference(models.Model):
relation = models.ForeignKey('SelectionalPreferenceRelation', on_delete=models.PROTECT)
to = models.ForeignKey('Argument', on_delete=models.PROTECT)
def __str__(self):
return '%s -> %s' % (self.relation, self.to)
class SelectionalPreferenceRelation(models.Model):
key = models.CharField(max_length=40, unique=True)
# name = TODO: wymaga lokalizacji
plwn_id = models.IntegerField(null=True)
class Meta:
ordering = ['key']
def __str__(self):
return self.key
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment