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
Letzte Änderung: 7. Juni 2003
Benedikt Wildenhain,
patente@benedikt-wildenhain.de