Startseite | Themenabende | Mailingliste | Pläne | Links | GnuPG-Schlüssel

Speicherung von Tabellendaten

EP1283486: Storage of row-column data http://swpat.ffii.org/patents/txt/ep/1283/486/

Verletzungsprogramm

Unix-Shell-Skript (Achtung: Bitte nicht ausführen!)
#!/bin/sh

# Parameters: input-file number-of-columns [C|R]
#             (C: concat columns; R: concat rows)

N=$2

# Preparation
cat << EOF | mysql
  use test
  drop table if exists t;
  create table t (`seq -f "c%g text," $N` dummy int);
  load data local infile '$1' into table t fields terminated by ' ';
EOF

# Format multiple columns (claim 11) by ...
# ... concatenating rows (claim 12)
if [ "$3" = R ]; then
  echo "use test; update t set c1=concat(`seq -f "c%g,'\n'," $N` '')" | mysql
  N=1
fi
# ... or columns (claim 13)
if [ "$3" = C ]; then
  echo "use test; update t set c1=concat(`seq -f "c%g," $N` '')" | mysql
  N=1
fi

# Format each column into a file (claim 1)
for n in `seq $N`; do

  cat << EOF | mysql > col$n

    use test

    # Count occurrences and derive a code from them (claim 6) and the position
    # (claim 5), store that in a table (claim 7)
    create temporary table occ (n int auto_increment primary key)
      select count(*) as c, c$n from t group by c$n;

    # Create an encoding table (claim 10)
    create temporary table enc select n, c, (n+c)*(n+c)+n as e from occ;

    # Store entries (claim 8) as a file header (claim 9)
    select c$n from occ;

    # Output dictionary entries (claim 53) in the header (claim 54)
    select e, occ.c, c$n from occ left join enc using (n, c);

    # Write values, replaced by the code (claim 4) to compress them (claim 3)
    select e from t left join occ using (c$n) left join enc using (n, c);

EOF
done
  
Das Programm benutzt zum größten Teil MySQL-Befehle, dazu ein paar Kommandos der Unix-Shell (bash). Es erwartet eine Eingabedatei mit Tabellendaten, wie die folgende:
foo bar foo
foo qux fred
bar bar baz
foo qux bar

Der genaue Aufruf ist im Kommentar beschrieben. Dort ist auch erläutert, wie die Ansprüche 1 und 3-13 verletzt werden. Indem man das Programm z.B. auf eine Festplatte speichert, verletzt man auch die Ansprüche 14 und 16-26 (die ansonsten identisch mit 1 und 3-13 sind). Lädt man das Programm in den Speicher eines üblichen PCs, verletzt man ebenso 27 und 29-39. Um 40 und 42-50 zu verletzen, muss man das Programm auf mehreren Rechnern mit einer gemeinsamen Datenquelle ausführen, z.B. die Eingabedatei auf einem gemeinsam genutzten NFS-Server ablegen. Speichert man auch das Programm auf dem NFS-Server, verletzt man auch 51. Die Ausgabe des Programms, gespeichert auf einer Festplatte, verletzt 52-54. Schließlich bilden solche Computersysteme mit dem Programm einen "apparatus", der 55 und 57-67 verletzt.
Insgesamt werden also 62 der 67 Ansprüche verletzt.
Zusatzbemerkung: Das Patent ist unvollständig! Zwar fordert es in Anspruch 10 die Verwendung eine Codierungstabelle, es besagt aber nicht, dass die verwendete Codierung umkehrbar sein soll, und dass man daraus auf die Codes (gemäß Anspruch 4) zurückschließen kann, und dass man weiterhin von diesen Codes auf die Tabellenwerte zurückschließen kann. Das vorliegende Programm implementiert diese Zusatzbedingungen ebenfalls (durch Verwendung einer injektiven Codierung NxN->N), deren zusätzliche Patentierung nun durch die Veröffentlichung des Programms verhindert wird.
Die Bundesregierung dürfte den (sehr allgemein gehaltenen) Anspruch 52 z.B. mit der Veröffentlichung des Statistischen Jahrbuchs durch das Bundesamt für Statistik verletzten (und ebenso vermutlich durch viele andere Veröffentlichungen und interne Datenspeicherungen), da es per Internet-Server abrufbar ist (http://www.destatis.de/download/veroe/stat_3.pdf) und damit auch auf einem Computer-lesbaren Medium gespeichert sein muss, in komprimierter Form (PDF) vorliegt und mehrere Tabellen mit Spaltenüberschriften enthält.

Übersicht Sieger-Patente

Startseite | Themenabende | Mailingliste | Pläne | Links | GnuPG-Schlüssel
Letzte Änderung: 7. Juni 2003
Benedikt Wildenhain, patente@benedikt-wildenhain.de