8 use Text::Tradition::Directory;
9 use Text::Tradition::Stemma;
11 binmode( STDOUT, ':utf8' );
12 binmode( STDERR, ':utf8' );
14 # Make a KiokuDB store from the traditions data we have.
16 my $kdb = Text::Tradition::Directory->new(
17 'dsn' => "dbi:SQLite:dbname=db/traditions.db",
18 'extra_args' => { 'create' => 1 },
22 'florilegium.xml' => 'stemma_a.dot',
23 'besoin.xml' => 'stemma_b.dot',
24 'heinrichi.xml' => 'stemma_h.dot',
25 'parzival.xml' => 'stemma_p.dot',
26 's158.xml' => 'stemma_s.dot',
32 opendir( DIR, $dir ) or die "Could not open directory $dir";
33 while( readdir DIR ) {
35 print STDERR "Looking at $_\n";
36 my $tradition = Text::Tradition->new(
42 if( exists $stemma_map{$_} ) {
43 my $stemmafile = "$dir/" . $stemma_map{$_};
44 $stemma = $tradition->add_stemma( $stemmafile );
46 my $scope = $kdb->new_scope();
47 my $tid = $kdb->save( $tradition );
48 print STDERR "Stored tradition for " . $tradition->name . " at $tid\n";
52 # Now try reading the objects from the DB.
53 foreach my $tid ( $kdb->tradition_ids ) {
54 my $scope = $kdb->new_scope();
55 my $t = $kdb->tradition( $tid );
56 print STDERR "Got tradition " . $t->name . " out of the database\n";
57 my @wits = map { $_->sigil } $t->witnesses;
58 print STDERR "...with witnesses @wits\n";
59 my $c = $t->collation;
60 print STDERR "Collation has " . scalar( $c->readings ) . " readings\n";
61 print STDERR "Collation has " . scalar( $c->paths ) . " paths\n";
62 print STDERR "Collation has " . scalar( $c->relationships ) . " relationship links\n";
65 print STDERR "Got stemma for tradition " . $s->collation->tradition->name
66 . " out of the database\n";
67 print STDERR "Stemma graph is " . $s->graph . "\n";