示例#1
0
 def test_merge_places(self):
     txt = Text.objects.create(text='test text')
     src = Source.objects.create(orig_id=24, pubinfo='test pub')
     pp = Place(name="Wien")
     pp.source = src
     pp.save()
     pp.text.add(txt)
     rel_type_birth = PersonPlaceRelation.objects.create(
         name='place of birth')
     pers = Person.objects.create(name="tesdt", first_name="test3")
     rel_1 = PersonPlace.objects.create(related_person=pers,
                                        relation_type=rel_type_birth,
                                        related_place=pp)
     ow = GenericRDFParser(self.uriGeon, 'Place')
     print('name: {}, lat: {}, long: {}, labels: {}'.format(
         ow.objct.name, ow.objct.lat, ow.objct.lng, ' / '.join(
             Label.objects.filter(temp_entity=ow.objct).values_list(
                 'label', flat=True))))
     if ow.created:
         print('created triggered')
         ow.save()
     ow2 = ow.merge(pp)
     print(ow)
     print(ow2)
     self.assertEqual(pp.source.pubinfo, ow.objct.source.pubinfo)
     self.assertEqual(txt.text, ow.objct.text.all()[0].text)
     for x in PersonPlace.objects.all():
         self.assertEqual(x.related_place.pk, ow.objct.pk)
示例#2
0
 def test_parse_place(self):
     o = GenericRDFParser(self.uriGeon, self.kindP)
     o2 = o.save()
     print('name: {}, lat: {}, long: {}, labels: {}, kind: {}'.format(
         o2.place.name, o2.place.lat, o2.place.lng, ' / '.join(
             Label.objects.filter(temp_entity=o2.place).values_list(
                 'label', flat=True)), o2.kind.name))
     t = GenericRDFParser(self.uri_gnd_geo, self.kindP)
     t2 = t.save()
     print('name: {}, lat: {}, long: {}, labels: {}'.format(
         t2.name, t2.lat, t2.lng, ' / '.join(
             Label.objects.filter(temp_entity=t2).values_list('label',
                                                              flat=True))))
     self.assertEqual(o2.lat, '48.20849')
     self.assertEqual(t2.lat, '053.583329')
示例#3
0
 def test_parse_person(self):
     print('Number of Persons: {}'.format(Person.objects.all().count()))
     o = GenericRDFParser(self.uriP, self.kindP)
     o2 = o.save()
     print('got following person: {}'.format(o2))
     self.assertEqual(o.objct.name, 'Eosander')
     self.assertEqual(o.objct.first_name, 'Johann Friedrich')
示例#4
0
 def test_merge_place(self):
     col = Collection.objects.create(name='test coll one')
     col2 = Collection.objects.create(name='test coll 2')
     w1 = Place.objects.create(name='Wien 21 test')
     w1.collection.add(col)
     w1.collection.add(col2)
     w1_label = Label.objects.create(label='Wien label 1', temp_entity=w1)
     w1_uri = Uri.objects.create(uri='http://test.uri.ac.at/orig:id',
                                 entity=w1)
     o = GenericRDFParser(self.uriGeon, self.kindP)
     o2 = o.save()
     o.merge(w1)
     for col in o2.collection.all():
         print('collection: {}'.format(col.name))
     self.assertEqual(
         Label.objects.filter(temp_entity=o2, label='Wien label 1').count(),
         1)
     self.assertEqual(
         Uri.objects.filter(entity=o2,
                            uri='http://test.uri.ac.at/orig:id').count(), 1)
     self.assertEqual(
         Label.objects.filter(label='Wien 21 test',
                              temp_entity=o2,
                              label_type__name='legacy name').count(), 1)
     self.assertEqual(o2.collection.all().count(), 3)
示例#5
0
 def test_related_places(self):
     o = GenericRDFParser(self.uriGeon, self.kindP)
     o2 = o.save()
     print(o2)
     print('related_objects: {}'.format(o.related_objcts))
     print('number of placeplace: {}'.format(
         PlacePlace.objects.all().count()))
     pp = PlacePlace.objects.filter(
         Q(related_placeA=o2) | Q(related_placeB=o2))
     self.assertEqual(pp.count(), 2)
示例#6
0
 def test_existing_place(self):
     c = GenericRDFParser('http://sws.geonames.org/2782113/', self.kindP)
     c.save()
     o = GenericRDFParser(self.uriGeon, self.kindP)
     o2 = o.save()
     Uri.objects.create(uri='http://test.at', entity=o2)
     pp = PlacePlace.objects.filter(
         Q(related_placeA=o2) | Q(related_placeB=o2))
     self.assertEqual(pp.count(), 2)
     for p in Place.objects.all():
         print('name: {}, uri: {}'.format(
             p.name, ' / '.join(p.uri_set.all().values_list('uri',
                                                            flat=True))))
     cc = Place.objects.filter(
         uri__uri__icontains='http://sws.geonames.org/2782113').distinct()
     self.assertEqual(cc.count(), 1)
     i = GenericRDFParser(self.uriGeon, self.kindP)
     i2 = i.save()
     print(' / '.join(i.objct.uri_set.all().values_list('uri', flat=True)))
     print(i.objct)
     cc = Place.objects.filter(uri__uri=self.uriGeon).distinct()
     self.assertEqual(cc.count(), 1)
示例#7
0
def resolve_ambigue_place(request, pk, uri):
    '''Only used to resolve place names.'''
    with reversion.create_revision():
        uri = 'http://' + uri
        entity = Place.objects.get(pk=pk)
        pl_n = GenericRDFParser(uri, kind='Place')
        pl_n_1 = pl_n.save()
        pl_n_1 = pl_n.merge(entity)
        url = pl_n_1.get_absolute_url()
        if pl_n.created:
            pl_n_1.status = 'distinct (manually resolved)'
            pl_n_1.save()
        UriCandidate.objects.filter(entity=entity).delete()
        reversion.set_user(request.user)

    return HttpResponseRedirect(url)
示例#8
0
 def test_place_of_birth_death(self):
     o = GenericRDFParser(self.uriP, self.kindP)
     p2 = o.save()
     print(p2.start_date)
     print(p2.end_date)
     rel_type_birth = PersonPlaceRelation.objects.get(name='place of birth')
     rel_type_death = PersonPlaceRelation.objects.get(name='place of death')
     rel_birth = PersonPlace.objects.get(related_person=o.objct,
                                         relation_type=rel_type_birth)
     rel_death = PersonPlace.objects.get(related_person=o.objct,
                                         relation_type=rel_type_death)
     self.assertEqual(rel_birth.related_place.name, 'Stralsund')
     self.assertEqual(rel_death.related_place.name, 'Dresden')
     plc_list = Label.objects.filter(
         temp_entity=rel_death.related_place).values_list('label',
                                                          flat=True)
     print(plc_list)
     self.assertTrue('Dressden' in plc_list)
     self.assertEqual(rel_death.related_place.lat, 13.738319)
     print('lat: {}, lng: {}'.format(rel_death.related_place.lat,
                                     rel_death.related_place.lng))