Каркас для пользовательских отношений - PullRequest
1 голос
/ 20 декабря 2010

Я думаю о создании сайта на платформе Django, где пользователи смогут связывать сущности друг с другом.Например, например: «Джон женат на Марии» или «Джон работает в Google».

Пользователи должны иметь возможность самостоятельно определять сущности и их отношения (и обычно определяют отношения с другими). люди, а не сами по себе).В идеале пользователи вводят эти отношения в виде свободного текста (где субъект и объект могут быть полем автозаполнения, основанным на ранее введенных существующих объектах).

Каркас модели Django идеально подходит для хранения объектов и их отношений, но какМожно ли сделать такую ​​вещь управляемой на более высоком уровне?

Существует ли онтологическая структура на основе Python (спасибо, duffymo), которая поможет мне вывести структуру из этих сгенерированных пользователем отношений?Я ищу способы, например, вывести обратимые отношения, совокупные отношения (например, «3 человека - это семейные отношения Джона»), классифицировать по типам отношений (семейные отношения, трудовые отношения, ...), и все это основано напользовательский ввод, а не (известный) предопределенный набор отношений.Это

Заранее спасибо,

Матье

Ответы [ 3 ]

1 голос
/ 20 декабря 2010

Пользователи могут сами определять отношения (и обычно определяют отношения других людей, а не самих себя);

Хорошо.

Другими словами, нет предопределенного набора возможных отношений.

Так? Это не интересное ограничение. Зачем это упоминать?

В идеале, пользователи вводят эти отношения в виде свободного текста (где субъект и объект могут быть полями автозаполнения).

Fine.

 class Person( models.Model ):
     # whatever

 class RelatedTo( models.Model ):
     one_person= models.ForeignKey( Person, related_name="me" )
     other_person= models.ForeignKey( Person, related_name="them" )
     relationship = models.TextField( )

Это один из способов сделать это. Это не сложно, если вы сделаете «отношения» первоклассным объектом.

Если вы хотите многопартийные отношения, это работает следующим образом.

 class Person( models.Model ):
     # whatever

 class RelatedTo( models.Model ):
     relationship_type = models.TextField( )

 class Party( models.Model ):
     relationship = ForeignKeyField( RelatedTo )
     role = models.TextField()
1 голос
/ 20 декабря 2010

Отказ от ответственности: я не ожидаю. Я учу Джанго в свободное время. Тем не менее ..

Возможно, вы захотите посмотреть на «многие ко многим - » как на полевые отношения.

Из документов:

http://docs.djangoproject.com/en/dev/topics/db/models/

Когда вы имеете дело только с простыми отношения многие ко многим, такие как смешивание и подбор пиццы и начинки, стандартный ManyToManyField это все, что тебе нужно. Однако иногда вам может потребоваться связать данные с связь между двумя моделями.

Где синтаксис выглядит следующим образом (также из примера в документации):

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')

    def __unicode__(self):
        return self.name
1 голос
/ 20 декабря 2010

Есть Protege , программа онтологии Стэнфорда.Если вы можете запустить его для Java, возможно, вы можете запустить его для Jython.

http://protege.stanford.edu/conference/2004/slides/3.3_dameron_7-7-04.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...