diff --git a/sql/swh-data.sql b/sql/swh-data.sql index 313e13e1..15e360a6 100644 --- a/sql/swh-data.sql +++ b/sql/swh-data.sql @@ -1,39 +1,701 @@ insert into entity_history (uuid, parent, name, type, description, homepage, active, generated, validity) values ('5f4d4c51-498a-4e28-88b3-b3e4e8396cba', NULL, 'softwareheritage', 'organization', 'Software Heritage', 'http://www.softwareheritage.org/', true, false, ARRAY[now()]), ('6577984d-64c8-4fab-b3ea-3cf63ebb8589', NULL, 'gnu', 'organization', 'GNU is not UNIX', 'https://gnu.org/', true, false, ARRAY[now()]), ('7c33636b-8f11-4bda-89d9-ba8b76a42cec', '6577984d-64c8-4fab-b3ea-3cf63ebb8589', 'GNU Hosting', 'group_of_entities', 'GNU Hosting facilities', NULL, true, false, ARRAY[now()]), ('4706c92a-8173-45d9-93d7-06523f249398', '6577984d-64c8-4fab-b3ea-3cf63ebb8589', 'GNU rsync mirror', 'hosting', 'GNU rsync mirror', 'rsync://mirror.gnu.org/', true, false, ARRAY[now()]), ('5cb20137-c052-4097-b7e9-e1020172c48e', '6577984d-64c8-4fab-b3ea-3cf63ebb8589', 'GNU Projects', 'group_of_entities', 'GNU Projects', 'https://gnu.org/software/', true, false, ARRAY[now()]), ('4bfb38f6-f8cd-4bc2-b256-5db689bb8da4', NULL, 'GitHub', 'organization', 'GitHub', 'https://github.org/', true, false, ARRAY[now()]), ('aee991a0-f8d7-4295-a201-d1ce2efc9fb2', '4bfb38f6-f8cd-4bc2-b256-5db689bb8da4', 'GitHub Hosting', 'group_of_entities', 'GitHub Hosting facilities', 'https://github.org/', true, false, ARRAY[now()]), ('34bd6b1b-463f-43e5-a697-785107f598e4', 'aee991a0-f8d7-4295-a201-d1ce2efc9fb2', 'GitHub git hosting', 'hosting', 'GitHub git hosting', 'https://github.org/', true, false, ARRAY[now()]), ('e8c3fc2e-a932-4fd7-8f8e-c40645eb35a7', 'aee991a0-f8d7-4295-a201-d1ce2efc9fb2', 'GitHub asset hosting', 'hosting', 'GitHub asset hosting', 'https://github.org/', true, false, ARRAY[now()]), ('9f7b34d9-aa98-44d4-8907-b332c1036bc3', '4bfb38f6-f8cd-4bc2-b256-5db689bb8da4', 'GitHub Organizations', 'group_of_entities', 'GitHub Organizations', 'https://github.org/', true, false, ARRAY[now()]), ('ad6df473-c1d2-4f40-bc58-2b091d4a750e', '4bfb38f6-f8cd-4bc2-b256-5db689bb8da4', 'GitHub Users', 'group_of_entities', 'GitHub Users', 'https://github.org/', true, false, ARRAY[now()]); insert into listable_entity (uuid, list_engine) values ('34bd6b1b-463f-43e5-a697-785107f598e4', 'swh.lister.github'); + +insert into license (name) +values + ('3DFX'), + ('3DFX-PL'), + ('AAL'), + ('ACAA'), + ('ACDL'), + ('ACE'), + ('Adaptec-GPL'), + ('Adaptec(RESTRICTED)'), + ('Adobe-AFM'), + ('Adobe-EULA'), + ('AFL'), + ('AFL-1.0'), + ('AFL-1.1'), + ('AFL-1.2'), + ('AFL-2.0'), + ('AFL-2.1'), + ('AFL-3.0'), + ('AFPL-Ghostscript'), + ('AgainstDRM'), + ('AGE-Logic'), + ('Agere-EULA'), + ('AGFA-EULA'), + ('AGFA(RESTRICTED)'), + ('AGPL'), + ('AGPL-1.0'), + ('AGPL-1.0+'), + ('AGPL-3.0'), + ('AGPL-3.0+'), + ('Aladdin'), + ('Alfresco'), + ('Alfresco/FLOSS'), + ('Algorithmics'), + ('AMD'), + ('AMD-EULA'), + ('ANTLR-PD'), + ('AOL-EULA'), + ('Apache'), + ('Apache-1.0'), + ('Apache-1.1'), + ('Apache-2.0'), + ('Apache-style'), + ('Apache-v1.0'), + ('APL'), + ('APL-1.0'), + ('Apple(FontForge)'), + ('Apple(Sample)'), + ('APSL'), + ('APSL-1.0'), + ('APSL-1.1'), + ('APSL-1.2'), + ('APSL-2.0'), + ('APSL-style'), + ('Aptana'), + ('Aptana-1.0'), + ('ARJ'), + ('Arphic-Font-PL'), + ('Arphic-style'), + ('Artifex'), + ('Artistic-1.0-cl8'), + ('Artistic-1.0-Perl'), + ('Ascender-EULA'), + ('ATI-EULA'), + ('ATMEL-FW'), + ('ATT(Non-commercial)'), + ('ATT-Source'), + ('ATT-Source-1.0'), + ('ATT-Source-1.2d'), + ('Baekmuk-Font'), + ('Baekmuk(Hwan)'), + ('BancTec'), + ('Beerware'), + ('Bellcore'), + ('Bellcore-style'), + ('BH-Font'), + ('BH-Font-style'), + ('BISON'), + ('BitTorrent'), + ('BitTorrent-1.0'), + ('BitTorrent-1.1'), + ('BIZNET'), + ('BIZNET-style'), + ('BrainStorm-EULA'), + ('Broadcom-EULA'), + ('BSD-2-Clause'), + ('BSD-2-Clause-FreeBSD'), + ('BSD-2-Clause-NetBSD'), + ('BSD-3-Clause'), + ('BSD-3-Clause-Clear'), + ('BSD-3-Clause-Severability'), + ('BSD-4-Clause'), + ('BSD-4-Clause-UC'), + ('BSL-1.0'), + ('BSL-style'), + ('CA'), + ('Cadence'), + ('CATOSL'), + ('CATOSL-1.1'), + ('CC0-1.0'), + ('CC-BY'), + ('CC-BY-1.0'), + ('CC-BY-2.0'), + ('CC-BY-2.5'), + ('CC-BY-3.0'), + ('CC-BY-4.0'), + ('CC-BY-NC-1.0'), + ('CC-BY-NC-2.0'), + ('CC-BY-NC-2.5'), + ('CC-BY-NC-3.0'), + ('CC-BY-NC-4.0'), + ('CC-BY-NC-ND-1.0'), + ('CC-BY-NC-ND-2.0'), + ('CC-BY-NC-ND-2.5'), + ('CC-BY-NC-ND-3.0'), + ('CC-BY-NC-ND-4.0'), + ('CC-BY-NC-SA-1.0'), + ('CC-BY-NC-SA-2.0'), + ('CC-BY-NC-SA-2.5'), + ('CC-BY-NC-SA-3.0'), + ('CC-BY-NC-SA-4.0'), + ('CC-BY-ND-1.0'), + ('CC-BY-ND-2.0'), + ('CC-BY-ND-2.5'), + ('CC-BY-ND-3.0'), + ('CC-BY-ND-4.0'), + ('CC-BY-SA'), + ('CC-BY-SA-1.0'), + ('CC-BY-SA-2.0'), + ('CC-BY-SA-2.5'), + ('CC-BY-SA-3.0'), + ('CC-BY-SA-4.0'), + ('CC-LGPL'), + ('CC-LGPL-2.1'), + ('CCLRC'), + ('CCPL'), + ('CDDL'), + ('CDDL-1.0'), + ('CDDL-1.1'), + ('CECILL'), + ('CECILL-2.0'), + ('CECILL-B'), + ('CECILL-C'), + ('CECILL(dual)'), + ('Cisco'), + ('Cisco-style'), + ('Citrix'), + ('ClArtistic'), + ('ClearSilver'), + ('CMake'), + ('CMU-style'), + ('CNRI-Python'), + ('CNRI-Python-GPL-Compatible'), + ('Combined_OpenSSL+SSLeay'), + ('CompuServe'), + ('Comtrol'), + ('Condor-1.0'), + ('Condor-1.1'), + ('CopyLeft[1]'), + ('CopyLeft[2]'), + ('CPL'), + ('CPL-0.5'), + ('CPL-1.0'), + ('CPOL'), + ('CPOL-1.02'), + ('Cryptogams'), + ('CUA-OPL-1.0'), + ('CUPS'), + ('CUPS-EULA'), + ('Cylink-ISC'), + ('Cypress-FW'), + ('DARPA'), + ('DARPA-Cougaar'), + ('Debian-social-DFSG'), + ('Debian-SPI'), + ('Debian-SPI-style'), + ('D-FSL-1.0'), + ('DMTF'), + ('DOCBOOK'), + ('DOCBOOK-style'), + ('DPTC'), + ('DSCT'), + ('DSL'), + ('Dyade'), + ('EBT-style'), + ('ECL-1.0'), + ('ECL-2.0'), + ('eCos-2.0'), + ('EFL'), + ('EFL-1.0'), + ('EFL-2.0'), + ('eGenix'), + ('Empty-file-no-data!'), + ('Entessa'), + ('Epinions'), + ('Epson-EULA'), + ('Epson-PL'), + ('ErlPL-1.1'), + ('EUDatagrid'), + ('EUPL-1.0'), + ('EUPL-1.1'), + ('FaCE'), + ('Fair'), + ('Fair-style'), + ('FAL-1.0'), + ('FAL-1.3'), + ('FedoraCLA'), + ('Flash2xml-1.0'), + ('Flora'), + ('Flora-1.0'), + ('Flora-1.1'), + ('Frameworx'), + ('Frameworx-1.0'), + ('FreeBSD-Doc'), + ('Free-PL'), + ('Free-SW'), + ('FTL'), + ('FTL-style'), + ('Fujitsu'), + ('Garmin-EULA'), + ('Genivia(Commercial)'), + ('GFDL'), + ('GFDL-1.1'), + ('GFDL-1.1+'), + ('GFDL-1.2'), + ('GFDL-1.2+'), + ('GFDL-1.3'), + ('GFDL-v1.2'), + ('Ghostscript-GPL-1.1'), + ('Giftware'), + ('GNU-copyleft'), + ('GNU-Ghostscript'), + ('GNU-javamail-exception'), + ('GNU-Manpages'), + ('Google-BSD'), + ('Govt-restrict'), + ('GPL'), + ('GPL-1.0'), + ('GPL-1.0+'), + ('GPL-2.0'), + ('GPL-2.0+'), + ('GPL-2.0:3.0'), + ('GPL-2.0+:3.0'), + ('GPL-2.0+KDEupgradeClause'), + ('GPL-2.0-with-autoconf-exception'), + ('GPL-2.0-with-bison-exception'), + ('GPL-2.0+-with-bison-exception'), + ('GPL-2.0-with-classpath-exception'), + ('GPL-2.0+-with-classpath-exception'), + ('GPL-2.0-with-font-exception'), + ('GPL-2.0-with-GCC-exception'), + ('GPL-2.1[sic]'), + ('GPL-2.1+[sic]'), + ('GPL-3?'), + ('GPL-3.0'), + ('GPL-3.0+'), + ('GPL-3.0-with-autoconf-exception'), + ('GPL-3.0-with-GCC-exception'), + ('GPL-3.0+-with-GCC-exception'), + ('GPL-Meta'), + ('GPL-or-LGPL'), + ('GPL(rms)'), + ('GPL-with-autoconf-exception'), + ('gSOAP'), + ('gSOAP-1.3b'), + ('H2'), + ('H2-1.0'), + ('Hacktivismo'), + ('Hauppauge'), + ('Helix/RealNetworks-EULA'), + ('HPND'), + ('IBM-Courier'), + ('IBM-JCL'), + ('IBM-pibs'), + ('IBM-reciprocal'), + ('ID-EULA'), + ('IDPL'), + ('IDPL-1.0'), + ('IEEE-Doc'), + ('IETF'), + ('IETF-style'), + ('IJG'), + ('ImageMagick'), + ('ImageMagick(Apache)'), + ('ImageMagick-style'), + ('Imlib2'), + ('InfoSeek'), + ('info-zip'), + ('InnerNet'), + ('InnerNet-2.00'), + ('InnerNet-style'), + ('Intel-EULA'), + ('Intel(RESTRICTED)'), + ('Intel-WLAN'), + ('Interbase-1.0'), + ('Interbase-PL'), + ('Interlink-EULA'), + ('Intranet-only'), + ('IOS'), + ('IoSoft(COMMERCIAL)'), + ('IPA'), + ('IPA-Font-EULA'), + ('IPL'), + ('IPL-1.0'), + ('IPL-2.0'), + ('IPTC'), + ('IronDoc'), + ('ISC'), + ('Jabber'), + ('Java-WSDL4J'), + ('Java-WSDL-Policy'), + ('Java-WSDL-Schema'), + ('Java-WSDL-Spec'), + ('JISP'), + ('JPNIC'), + ('JSON'), + ('KDE'), + ('Keyspan-FW'), + ('KnowledgeTree-1.1'), + ('Knuth-style'), + ('Lachman-Proprietary'), + ('Larabie-EULA'), + ('LDP-1A'), + ('LDP-2.0'), + ('Legato'), + ('Leptonica'), + ('LGPL'), + ('LGPL-1.0'), + ('LGPL-1.0+'), + ('LGPL-2.0'), + ('LGPL-2.0+'), + ('LGPL-2.1'), + ('LGPL-2.1+'), + ('LGPL-2.1+-KDE-exception'), + ('LGPL-3?'), + ('LGPL-3.0'), + ('LGPL-3.0+'), + ('LIBGCJ'), + ('Libpng'), + ('Link-exception'), + ('LinuxDoc'), + ('Linux-HOWTO'), + ('Logica-OSL-1.0'), + ('LPL-1.0'), + ('LPL-1.02'), + ('LPPL'), + ('LPPL-1.0'), + ('LPPL-1.0+'), + ('LPPL-1.1'), + ('LPPL-1.1+'), + ('LPPL-1.2'), + ('LPPL-1.2+'), + ('LPPL-1.3'), + ('LPPL-1.3+'), + ('LPPL-1.3a'), + ('LPPL-1.3a+'), + ('LPPL-1.3b'), + ('LPPL-1.3b+'), + ('LPPL-1.3c'), + ('LPPL-1.3c+'), + ('MacroMedia-RPSL'), + ('Macrovision'), + ('Macrovision-EULA'), + ('Majordomo'), + ('Majordomo-1.1'), + ('Mandriva'), + ('Mellanox'), + ('MetroLink'), + ('MetroLink-nonfree'), + ('Mibble'), + ('Mibble-2.8'), + ('Microsoft'), + ('Migemo'), + ('MindTerm'), + ('MirOS'), + ('MITEM'), + ('MitreCVW-style'), + ('Motosoto'), + ('MPEG3-decoder'), + ('MPL'), + ('MPL-1.0'), + ('MPL-1.1'), + ('MPL-1.1+'), + ('MPL-1.1-style'), + ('MPL-2.0'), + ('MPL-2.0-no-copyleft-exception'), + ('MPL-EULA-1.1'), + ('MPL-EULA-2.0'), + ('MPL-EULA-3.0'), + ('MPL-style'), + ('M-Plus-Project'), + ('MRL'), + ('MS-indemnity'), + ('MS-LPL'), + ('MS-LRL'), + ('Multics'), + ('MX4J'), + ('MX4J-1.0'), + ('MySQL-0.3'), + ('MySQL/FLOSS'), + ('MySQL-style'), + ('NASA'), + ('NASA-1.3'), + ('Naumen'), + ('NBPL-1.0'), + ('nCipher'), + ('NCSA'), + ('NESSUS-EULA'), + ('NGPL'), + ('Nokia'), + ('No_license_found'), + ('non-ATT-BSD'), + ('None'), + ('NOSL-1.0'), + ('Not-for-sale!'), + ('Not-Free!'), + ('Not-Internet'), + ('Not-OpenSource!'), + ('NOT-Open-Source!'), + ('NOT-public-domain'), + ('Novell'), + ('Novell-EULA'), + ('NPL'), + ('NPL-1.0'), + ('NPL-1.1'), + ('NPL-1.1+'), + ('NPL-EULA'), + ('NPOSL-3.0'), + ('NRL'), + ('NTP'), + ('OASIS'), + ('OCL'), + ('OCL-1.0'), + ('OCLC'), + ('OCLC-1.0'), + ('OCLC-2.0'), + ('OCL-style'), + ('ODbL-1.0'), + ('ODL'), + ('OFL-1.0'), + ('OFL-1.1'), + ('OGTSL'), + ('OLDAP'), + ('OLDAP-1.1'), + ('OLDAP-1.2'), + ('OLDAP-1.3'), + ('OLDAP-1.4'), + ('OLDAP-2.0'), + ('OLDAP-2.0.1'), + ('OLDAP-2.1'), + ('OLDAP-2.2'), + ('OLDAP-2.2.1'), + ('OLDAP-2.2.2'), + ('OLDAP-2.3'), + ('OLDAP-2.4'), + ('OLDAP-2.5'), + ('OLDAP-2.6'), + ('OLDAP-2.7'), + ('OLDAP-2.8'), + ('OLDAP-style'), + ('OMF'), + ('Ontopia'), + ('OpenCASCADE-PL'), + ('OpenGroup'), + ('OpenGroup-Proprietary'), + ('OpenMarket'), + ('Open-PL'), + ('Open-PL-0.4'), + ('Open-PL-1.0'), + ('Open-PL-style'), + ('OPL-1.0'), + ('Oracle-Berkeley-DB'), + ('O''Reilly'), + ('O''Reilly-style'), + ('OSD'), + ('OSL'), + ('OSL-1.0'), + ('OSL-1.1'), + ('OSL-2.0'), + ('OSL-2.1'), + ('OSL-3.0'), + ('Paradigm'), + ('Patent-ref'), + ('PDDL-1.0'), + ('Phorum'), + ('PHP-3.0'), + ('PHP-style'), + ('Piriform'), + ('Pixware-EULA'), + ('Polyserve-CONFIDENTIAL'), + ('Postfix'), + ('PostgreSQL'), + ('Powder-Proprietary'), + ('Princeton'), + ('Princeton-style'), + ('Proprietary!'), + ('Public-domain'), + ('Public-domain(C)'), + ('Public-domain-ref'), + ('Public-Use'), + ('Public-Use-1.0'), + ('Python'), + ('Python-2.0'), + ('Python-2.0.1'), + ('Python-2.0.2'), + ('Python-2.1.1'), + ('Python-2.1.3'), + ('Python-2.2'), + ('Python-2.2.3'), + ('Python-2.2.7'), + ('Python-2.3'), + ('Python-2.3.7'), + ('Python-2.4.4'), + ('Python-style'), + ('Qmail'), + ('QPL'), + ('QPL-1.0'), + ('QT(Commercial)'), + ('QuarterDeck'), + ('Quest-EULA'), + ('RCSL'), + ('RCSL-1.0'), + ('RCSL-2.0'), + ('RCSL-3.0'), + ('RealNetworks-EULA'), + ('RealNetworks-Unknown'), + ('RedHat-EULA'), + ('Redland'), + ('Restricted-rights'), + ('RHeCos-1.1'), + ('Riverbank-EULA'), + ('RPL-1.5'), + ('RPSL'), + ('RPSL-1.0'), + ('RPSL-2.0'), + ('RPSL-3.0'), + ('RSCPL'), + ('Ruby'), + ('SAX-PD'), + ('SciTech'), + ('SCO(commercial)'), + ('SCSL'), + ('SCSL-2.3'), + ('SCSL-3.0'), + ('SCSL-TSA'), + ('SCSL-TSA-1.0'), + ('See-doc(OTHER)'), + ('See-file'), + ('See-file(COPYING)'), + ('See-file(LICENSE)'), + ('See-file(README)'), + ('See-URL'), + ('Sendmail'), + ('SGI'), + ('SGI-B-1.0'), + ('SGI-B-1.1'), + ('SGI-B-2.0'), + ('SGI-Freeware'), + ('SGI_GLX'), + ('SGI-Proprietary'), + ('SGI-style'), + ('SGML'), + ('SimPL-2.0'), + ('SISSL'), + ('SISSL-1.1'), + ('SISSL-1.2'), + ('Skype-EULA'), + ('Sleepycat(Non-commercial)'), + ('SMLNJ'), + ('SNIA'), + ('SNIA-1.0'), + ('SNIA-1.1'), + ('SpikeSource'), + ('SPL'), + ('SPL-1.0'), + ('Stanford'), + ('Stanford-style'), + ('SugarCRM-1.1.3'), + ('Sun-BCLA-1.5.0'), + ('Sun-EULA'), + ('Sun-IP'), + ('Sun-Java'), + ('Sun(Non-commercial)'), + ('SunPro'), + ('Sun(RESTRICTED)'), + ('Sun-RPC'), + ('Sun-SCA'), + ('Sun(tm)'), + ('SW-Research'), + ('Tapjoy'), + ('Tektronix'), + ('Tektronix-style'), + ('Trademark-ref'), + ('Trident-EULA'), + ('Trolltech'), + ('U-BC'), + ('U-Cambridge'), + ('U-Cambridge-style'), + ('UCAR'), + ('UCAR-style'), + ('U-Chicago'), + ('U-Columbia'), + ('UCWare-EULA'), + ('U-Del'), + ('U-Del-style'), + ('U-Monash'), + ('UnclassifiedLicense'), + ('Unidex'), + ('UnitedLinux-EULA'), + ('Unlicense'), + ('unRAR restriction'), + ('URA(gov''t)'), + ('USC'), + ('USC(Non-commercial)'), + ('USC-style'), + ('US-Export-restrict'), + ('U-Utah'), + ('U-Wash(Free-Fork)'), + ('VIM'), + ('Vixie'), + ('Vixie-license'), + ('VMware-EULA'), + ('VSL-1.0'), + ('Wash-U-style'), + ('Watcom'), + ('Watcom-1.0'), + ('WebM'), + ('Wintertree'), + ('WordNet-3.0'), + ('WTFPL'), + ('WTI(Not-free)'), + ('WXwindows'), + ('X11'), + ('Xerox'), + ('Xerox-style'), + ('XFree86'), + ('XFree86-1.0'), + ('XFree86-1.1'), + ('Ximian'), + ('Ximian-1.0'), + ('XMLDB-1.0'), + ('Xnet'), + ('XOPEN-EULA'), + ('X/Open-style'), + ('Yahoo-EULA'), + ('YaST(SuSE)'), + ('YPL'), + ('YPL-1.0'), + ('YPL-1.1'), + ('Zend-2.0'), + ('Zeus'), + ('Zimbra'), + ('Zimbra-1.2'), + ('Zimbra-1.3'), + ('Zlib'), + ('ZoneAlarm-EULA'), + ('ZPL-1.0'), + ('ZPL-1.1'), + ('ZPL-2.0'), + ('ZPL-2.1'), + ('Zveno'); diff --git a/sql/swh-schema.sql b/sql/swh-schema.sql index df9e1f48..d56f1890 100644 --- a/sql/swh-schema.sql +++ b/sql/swh-schema.sql @@ -1,605 +1,625 @@ --- --- Software Heritage Data Model --- -- drop schema if exists swh cascade; -- create schema swh; -- set search_path to swh; create table dbversion ( version int primary key, release timestamptz, description text ); insert into dbversion(version, release, description) values(90, now(), 'Work In Progress'); -- a SHA1 checksum (not necessarily originating from Git) create domain sha1 as bytea check (length(value) = 20); -- a Git object ID, i.e., a SHA1 checksum create domain sha1_git as bytea check (length(value) = 20); -- a SHA256 checksum create domain sha256 as bytea check (length(value) = 32); -- UNIX path (absolute, relative, individual path component, etc.) create domain unix_path as bytea; -- a set of UNIX-like access permissions, as manipulated by, e.g., chmod create domain file_perms as int; -- Checksums about actual file content. Note that the content itself is not -- stored in the DB, but on external (key-value) storage. A single checksum is -- used as key there, but the other can be used to verify that we do not inject -- content collisions not knowingly. create table content ( sha1 sha1 primary key, sha1_git sha1_git not null, sha256 sha256 not null, length bigint not null, ctime timestamptz not null default now(), -- creation time, i.e. time of (first) injection into the storage status content_status not null default 'visible', object_id bigserial ); create unique index on content(sha1_git); create unique index on content(sha256); create index on content(ctime); -- TODO use a BRIN index here (postgres >= 9.5) create index on content(object_id); -- Asynchronous notification of new content insertions create function notify_new_content() returns trigger language plpgsql as $$ begin perform pg_notify('new_content', encode(new.sha1, 'hex')); return null; end; $$; create trigger notify_new_content after insert on content for each row execute procedure notify_new_content(); -- Entities constitute a typed hierarchy of organization, hosting -- facilities, groups, people and software projects. -- -- Examples of entities: Software Heritage, Debian, GNU, GitHub, -- Apache, The Linux Foundation, the Debian Python Modules Team, the -- torvalds GitHub user, the torvalds/linux GitHub project. -- -- The data model is hierarchical (via the parent attribute) and might -- store sub-branches of existing entities. The key feature of an -- entity is might be *listed* (if it is available in listable_entity) -- to retrieve information about its content, i.e: sub-entities, -- projects, origins. -- The history of entities. Allows us to keep historical metadata -- about entities. The temporal invariant is the uuid. Root -- organization uuids are manually generated (and available in -- swh-data.sql). -- -- For generated entities (generated = true), we can provide -- generation_metadata to allow listers to retrieve the uuids of previous -- iterations of the entity. -- -- Inactive entities that have been active in the past (active = -- false) should register the timestamp at which we saw them -- deactivate, in a new entry of entity_history. create table entity_history ( id bigserial primary key, uuid uuid, parent uuid, -- should reference entity_history(uuid) name text not null, type entity_type not null, description text, homepage text, active boolean not null, -- whether the entity was seen on the last listing generated boolean not null, -- whether this entity has been generated by a lister lister_metadata jsonb, -- lister-specific metadata, used for queries metadata jsonb, validity timestamptz[] -- timestamps at which we have seen this entity ); create index on entity_history(uuid); create index on entity_history(name); -- The entity table provides a view of the latest information on a -- given entity. It is updated via a trigger on entity_history. create table entity ( uuid uuid primary key, parent uuid references entity(uuid) deferrable initially deferred, name text not null, type entity_type not null, description text, homepage text, active boolean not null, -- whether the entity was seen on the last listing generated boolean not null, -- whether this entity has been generated by a lister lister_metadata jsonb, -- lister-specific metadata, used for queries metadata jsonb, last_seen timestamptz, -- last listing time or disappearance time for active=false last_id bigint references entity_history(id) -- last listing id ); create index on entity(name); create index on entity using gin(lister_metadata jsonb_path_ops); -- Register the equivalence between two entities. Allows sideways -- navigation in the entity table create table entity_equivalence ( entity1 uuid references entity(uuid), entity2 uuid references entity(uuid), primary key (entity1, entity2), constraint order_entities check (entity1 < entity2) ); -- Register a lister for a specific entity. create table listable_entity ( uuid uuid references entity(uuid) primary key, enabled boolean not null default true, -- do we list this entity automatically? list_engine text, -- crawler to be used to list entity's content list_url text, -- root URL to start the listing list_params jsonb, -- org-specific listing parameter latest_list timestamptz -- last time the entity's content has been listed ); -- Log of all entity listings (i.e., entity crawling) that have been -- done in the past, or are still ongoing. create table list_history ( id bigserial primary key, entity uuid references listable_entity(uuid), date timestamptz not null, status boolean, -- true if and only if the listing has been successful result jsonb, -- more detailed return value, depending on status stdout text, stderr text, duration interval -- fetch duration of NULL if still ongoing ); -- An origin is a place, identified by an URL, where software can be found. We -- support different kinds of origins, e.g., git and other VCS repositories, -- web pages that list tarballs URLs (e.g., http://www.kernel.org), indirect -- tarball URLs (e.g., http://www.example.org/latest.tar.gz), etc. The key -- feature of an origin is that it can be *fetched* (wget, git clone, svn -- checkout, etc.) to retrieve all the contained software. create table origin ( id bigserial primary key, type text, -- TODO use an enum here (?) url text not null, lister uuid references listable_entity(uuid), project uuid references entity(uuid) ); create index on origin(type, url); -- Asynchronous notification of new origin insertions create function notify_new_origin() returns trigger language plpgsql as $$ begin perform pg_notify('new_origin', new.id::text); return null; end; $$; create trigger notify_new_origin after insert on origin for each row execute procedure notify_new_origin(); -- Content we have seen but skipped for some reason. This table is -- separate from the content table as we might not have the sha1 -- checksum of that data (for instance when we inject git -- repositories, objects that are too big will be skipped here, and we -- will only know their sha1_git). 'reason' contains the reason the -- content was skipped. origin is a nullable column allowing to find -- out which origin contains that skipped content. create table skipped_content ( sha1 sha1, sha1_git sha1_git, sha256 sha256, length bigint not null, ctime timestamptz not null default now(), status content_status not null default 'absent', reason text not null, origin bigint references origin(id), object_id bigserial, unique (sha1, sha1_git, sha256) ); -- Those indexes support multiple NULL values. create unique index on skipped_content(sha1); create unique index on skipped_content(sha1_git); create unique index on skipped_content(sha256); create index on skipped_content(object_id); -- Asynchronous notification of new skipped content insertions create function notify_new_skipped_content() returns trigger language plpgsql as $$ begin perform pg_notify('new_skipped_content', json_build_object( 'sha1', encode(new.sha1, 'hex'), 'sha1_git', encode(new.sha1_git, 'hex'), 'sha256', encode(new.sha256, 'hex') )::text); return null; end; $$; create trigger notify_new_skipped_content after insert on skipped_content for each row execute procedure notify_new_skipped_content(); -- Log of all origin fetches (i.e., origin crawling) that have been done in the -- past, or are still ongoing. Similar to list_history, but for origins. create table fetch_history ( id bigserial primary key, origin bigint references origin(id), date timestamptz not null, status boolean, -- true if and only if the fetch has been successful result jsonb, -- more detailed returned values, times, etc... stdout text, stderr text, -- null when status is true, filled otherwise duration interval -- fetch duration of NULL if still ongoing ); -- A file-system directory. A directory is a list of directory entries (see -- tables: directory_entry_{dir,file}). -- -- To list the contents of a directory: -- 1. list the contained directory_entry_dir using array dir_entries -- 2. list the contained directory_entry_file using array file_entries -- 3. list the contained directory_entry_rev using array rev_entries -- 4. UNION -- -- Synonyms/mappings: -- * git: tree create table directory ( id sha1_git primary key, dir_entries bigint[], -- sub-directories, reference directory_entry_dir file_entries bigint[], -- contained files, reference directory_entry_file rev_entries bigint[], -- mounted revisions, reference directory_entry_rev object_id bigserial -- short object identifier ); create index on directory using gin (dir_entries); create index on directory using gin (file_entries); create index on directory using gin (rev_entries); create index on directory(object_id); -- Asynchronous notification of new directory insertions create function notify_new_directory() returns trigger language plpgsql as $$ begin perform pg_notify('new_directory', encode(new.id, 'hex')); return null; end; $$; create trigger notify_new_directory after insert on directory for each row execute procedure notify_new_directory(); -- A directory entry pointing to a sub-directory. create table directory_entry_dir ( id bigserial primary key, target sha1_git, -- id of target directory name unix_path, -- path name, relative to containing dir perms file_perms -- unix-like permissions ); create unique index on directory_entry_dir(target, name, perms); -- A directory entry pointing to a file. create table directory_entry_file ( id bigserial primary key, target sha1_git, -- id of target file name unix_path, -- path name, relative to containing dir perms file_perms -- unix-like permissions ); create unique index on directory_entry_file(target, name, perms); -- A directory entry pointing to a revision. create table directory_entry_rev ( id bigserial primary key, target sha1_git, -- id of target revision name unix_path, -- path name, relative to containing dir perms file_perms -- unix-like permissions ); create unique index on directory_entry_rev(target, name, perms); create table person ( id bigserial primary key, fullname bytea not null, -- freeform specification; what is actually used in the checksums -- will usually be of the form 'name ' name bytea, -- advisory: not null if we managed to parse a name email bytea -- advisory: not null if we managed to parse an email ); create unique index on person(fullname); create index on person(name); create index on person(email); -- A snapshot of a software project at a specific point in time. -- -- Synonyms/mappings: -- * git / subversion / etc: commit -- * tarball: a specific tarball -- -- Revisions are organized as DAGs. Each revision points to 0, 1, or more (in -- case of merges) parent revisions. Each revision points to a directory, i.e., -- a file-system tree containing files and directories. create table revision ( id sha1_git primary key, date timestamptz, date_offset smallint, date_neg_utc_offset boolean, committer_date timestamptz, committer_date_offset smallint, committer_date_neg_utc_offset boolean, type revision_type not null, directory sha1_git, -- file-system tree message bytea, author bigint references person(id), committer bigint references person(id), metadata jsonb, -- extra metadata (tarball checksums, extra commit information, etc...) synthetic boolean not null default false, -- true if synthetic (cf. swh-loader-tar) object_id bigserial ); create index on revision(directory); create index on revision(object_id); -- Asynchronous notification of new revision insertions create function notify_new_revision() returns trigger language plpgsql as $$ begin perform pg_notify('new_revision', encode(new.id, 'hex')); return null; end; $$; create trigger notify_new_revision after insert on revision for each row execute procedure notify_new_revision(); -- either this table or the sha1_git[] column on the revision table create table revision_history ( id sha1_git references revision(id), parent_id sha1_git, parent_rank int not null default 0, -- parent position in merge commits, 0-based primary key (id, parent_rank) ); create index on revision_history(parent_id); -- The timestamps at which Software Heritage has made a visit of the given origin. create table origin_visit ( origin bigint not null references origin(id), visit bigint not null, date timestamptz not null, status origin_visit_status not null, metadata jsonb, primary key (origin, visit) ); comment on column origin_visit.origin is 'Visited origin'; comment on column origin_visit.visit is 'Visit number the visit occurred for that origin'; comment on column origin_visit.date is 'Visit date for that origin'; comment on column origin_visit.status is 'Visit status for that origin'; comment on column origin_visit.metadata is 'Metadata associated with the visit'; create index on origin_visit(date); -- Asynchronous notification of new origin visits create function notify_new_origin_visit() returns trigger language plpgsql as $$ begin perform pg_notify('new_origin_visit', json_build_object( 'origin', new.origin, 'visit', new.visit )::text); return null; end; $$; create trigger notify_new_origin_visit after insert on origin_visit for each row execute procedure notify_new_origin_visit(); -- The content of software origins is indexed starting from top-level pointers -- called "branches". Every time we fetch some origin we store in this table -- where the branches pointed to at fetch time. -- -- Synonyms/mappings: -- * git: ref (in the "git update-ref" sense) create table occurrence_history ( origin bigint references origin(id) not null, branch bytea not null, -- e.g., b"master" (for VCS), or b"sid" (for Debian) target sha1_git not null, -- ref target, e.g., commit id target_type object_type not null, -- ref target type object_id bigserial not null, -- short object identifier visits bigint[] not null, -- the visits where that occurrence was valid. References -- origin_visit(visit), where o_h.origin = origin_visit.origin. primary key (object_id) ); create index on occurrence_history(target, target_type); create index on occurrence_history(origin, branch); create unique index on occurrence_history(origin, branch, target, target_type); create index on occurrence_history(object_id); -- Materialized view of occurrence_history, storing the *current* value of each -- branch, as last seen by SWH. create table occurrence ( origin bigint references origin(id) not null, branch bytea not null, target sha1_git not null, target_type object_type not null, primary key(origin, branch) ); -- A "memorable" point in the development history of a project. -- -- Synonyms/mappings: -- * git: tag (of the annotated kind, otherwise they are just references) -- * tarball: the release version number create table release ( id sha1_git primary key, target sha1_git, target_type object_type, date timestamptz, date_offset smallint, date_neg_utc_offset boolean, name bytea, comment bytea, author bigint references person(id), synthetic boolean not null default false, -- true if synthetic (cf. swh-loader-tar) object_id bigserial ); create index on release(target, target_type); create index on release(object_id); -- Asynchronous notification of new release insertions create function notify_new_release() returns trigger language plpgsql as $$ begin perform pg_notify('new_release', encode(new.id, 'hex')); return null; end; $$; create trigger notify_new_release after insert on release for each row execute procedure notify_new_release(); -- Content provenance information caches -- https://forge.softwareheritage.org/T547 -- -- Those tables aren't expected to be exhaustive, and get filled on a case by -- case basis: absence of data doesn't mean the data is not there -- content <-> revision mapping cache -- -- semantics: "we have seen the content with given id in the given path inside -- the given revision" create table cache_content_revision ( content sha1_git not null primary key references content(sha1_git), blacklisted boolean default false, revision_paths bytea[][] ); create table cache_content_revision_processed ( revision sha1_git not null primary key references revision(id) ); -- revision <-> origin_visit mapping cache -- -- semantics: "we have seen the given revision in the given origin during the -- given visit" create table cache_revision_origin ( revision sha1_git not null references revision(id), origin bigint not null, visit bigint not null, primary key (revision, origin, visit), foreign key (origin, visit) references origin_visit (origin, visit) ); create index on cache_revision_origin(revision); -- Computing metadata on sha1's contents -- Properties (mimetype, encoding, etc...) create table content_mimetype ( id sha1 primary key references content(sha1) not null, mimetype bytea not null, encoding bytea not null ); comment on table content_mimetype is 'Metadata associated to a raw content'; comment on column content_mimetype.mimetype is 'Raw content Mimetype'; comment on column content_mimetype.encoding is 'Raw content encoding'; -- Language metadata create table content_language ( id sha1 primary key references content(sha1) not null, lang languages not null ); comment on table content_language is 'Language information on a raw content'; comment on column content_language.lang is 'Language information'; -- ctags information per content create table content_ctags ( id sha1 references content(sha1) not null, name text not null, kind text not null, line bigint not null, lang ctags_languages not null ); comment on table content_ctags is 'Ctags information on a raw content'; comment on column content_ctags.id is 'Content identifier'; comment on column content_ctags.name is 'Symbol name'; comment on column content_ctags.kind is 'Symbol kind (function, class, variable, const...)'; comment on column content_ctags.line is 'Symbol line'; comment on column content_ctags.lang is 'Language information for that content'; create index on content_ctags(id); create unique index on content_ctags(id, md5(name), kind, line, lang); + +create table license( + id serial primary key, + name bytea not null +); + +comment on table license is 'Possible license recognized by license indexer'; +comment on column license.id is 'License identifier'; +comment on column license.name is 'License name'; + +create unique index on license(name); + +create table content_license ( + id sha1 primary key references content(sha1) not null, + licenses bigint[] -- reference license(id) +); + +comment on table content_license is 'license associated to a raw content'; +comment on column content_license.id is 'Raw content identifier'; +comment on column content_license.licenses is 'Raw content licenses'; diff --git a/sql/upgrades/090.sql b/sql/upgrades/090.sql index 0c0e2878..4d341fba 100644 --- a/sql/upgrades/090.sql +++ b/sql/upgrades/090.sql @@ -1,14 +1,696 @@ -- SWH DB schema upgrade -- from_version: 89 -- to_version: 90 -- description: indexer: Add content_ctags insert into dbversion(version, release, description) values(90, now(), 'Work In Progress'); comment on type content_status is 'Content visibility'; comment on type entity_type is 'Entity types'; comment on type revision_type is 'Possible revision types'; comment on type object_type is 'Data object types stored in data model'; comment on type languages is 'Languages recognized by language indexer'; comment on type ctags_languages is 'Languages recognized by ctags indexer'; + +create table license( + id serial primary key, + name bytea not null +); + +comment on table license is 'Possible license recognized by license indexer'; +comment on column license.id is 'License identifier'; +comment on column license.name is 'License name'; + +create unique index on license(name); + +create table content_license ( + id sha1 primary key references content(sha1) not null, + licenses bigint[] -- reference license(id) +); + +comment on table content_license is 'license associated to a raw content'; +comment on column content_license.id is 'Raw content identifier'; +comment on column content_license.licenses is 'Raw content licenses'; + +insert into license (name) +values + ('3DFX'), + ('3DFX-PL'), + ('AAL'), + ('ACAA'), + ('ACDL'), + ('ACE'), + ('Adaptec-GPL'), + ('Adaptec(RESTRICTED)'), + ('Adobe-AFM'), + ('Adobe-EULA'), + ('AFL'), + ('AFL-1.0'), + ('AFL-1.1'), + ('AFL-1.2'), + ('AFL-2.0'), + ('AFL-2.1'), + ('AFL-3.0'), + ('AFPL-Ghostscript'), + ('AgainstDRM'), + ('AGE-Logic'), + ('Agere-EULA'), + ('AGFA-EULA'), + ('AGFA(RESTRICTED)'), + ('AGPL'), + ('AGPL-1.0'), + ('AGPL-1.0+'), + ('AGPL-3.0'), + ('AGPL-3.0+'), + ('Aladdin'), + ('Alfresco'), + ('Alfresco/FLOSS'), + ('Algorithmics'), + ('AMD'), + ('AMD-EULA'), + ('ANTLR-PD'), + ('AOL-EULA'), + ('Apache'), + ('Apache-1.0'), + ('Apache-1.1'), + ('Apache-2.0'), + ('Apache-style'), + ('Apache-v1.0'), + ('APL'), + ('APL-1.0'), + ('Apple(FontForge)'), + ('Apple(Sample)'), + ('APSL'), + ('APSL-1.0'), + ('APSL-1.1'), + ('APSL-1.2'), + ('APSL-2.0'), + ('APSL-style'), + ('Aptana'), + ('Aptana-1.0'), + ('ARJ'), + ('Arphic-Font-PL'), + ('Arphic-style'), + ('Artifex'), + ('Artistic-1.0-cl8'), + ('Artistic-1.0-Perl'), + ('Ascender-EULA'), + ('ATI-EULA'), + ('ATMEL-FW'), + ('ATT(Non-commercial)'), + ('ATT-Source'), + ('ATT-Source-1.0'), + ('ATT-Source-1.2d'), + ('Baekmuk-Font'), + ('Baekmuk(Hwan)'), + ('BancTec'), + ('Beerware'), + ('Bellcore'), + ('Bellcore-style'), + ('BH-Font'), + ('BH-Font-style'), + ('BISON'), + ('BitTorrent'), + ('BitTorrent-1.0'), + ('BitTorrent-1.1'), + ('BIZNET'), + ('BIZNET-style'), + ('BrainStorm-EULA'), + ('Broadcom-EULA'), + ('BSD-2-Clause'), + ('BSD-2-Clause-FreeBSD'), + ('BSD-2-Clause-NetBSD'), + ('BSD-3-Clause'), + ('BSD-3-Clause-Clear'), + ('BSD-3-Clause-Severability'), + ('BSD-4-Clause'), + ('BSD-4-Clause-UC'), + ('BSL-1.0'), + ('BSL-style'), + ('CA'), + ('Cadence'), + ('CATOSL'), + ('CATOSL-1.1'), + ('CC0-1.0'), + ('CC-BY'), + ('CC-BY-1.0'), + ('CC-BY-2.0'), + ('CC-BY-2.5'), + ('CC-BY-3.0'), + ('CC-BY-4.0'), + ('CC-BY-NC-1.0'), + ('CC-BY-NC-2.0'), + ('CC-BY-NC-2.5'), + ('CC-BY-NC-3.0'), + ('CC-BY-NC-4.0'), + ('CC-BY-NC-ND-1.0'), + ('CC-BY-NC-ND-2.0'), + ('CC-BY-NC-ND-2.5'), + ('CC-BY-NC-ND-3.0'), + ('CC-BY-NC-ND-4.0'), + ('CC-BY-NC-SA-1.0'), + ('CC-BY-NC-SA-2.0'), + ('CC-BY-NC-SA-2.5'), + ('CC-BY-NC-SA-3.0'), + ('CC-BY-NC-SA-4.0'), + ('CC-BY-ND-1.0'), + ('CC-BY-ND-2.0'), + ('CC-BY-ND-2.5'), + ('CC-BY-ND-3.0'), + ('CC-BY-ND-4.0'), + ('CC-BY-SA'), + ('CC-BY-SA-1.0'), + ('CC-BY-SA-2.0'), + ('CC-BY-SA-2.5'), + ('CC-BY-SA-3.0'), + ('CC-BY-SA-4.0'), + ('CC-LGPL'), + ('CC-LGPL-2.1'), + ('CCLRC'), + ('CCPL'), + ('CDDL'), + ('CDDL-1.0'), + ('CDDL-1.1'), + ('CECILL'), + ('CECILL-2.0'), + ('CECILL-B'), + ('CECILL-C'), + ('CECILL(dual)'), + ('Cisco'), + ('Cisco-style'), + ('Citrix'), + ('ClArtistic'), + ('ClearSilver'), + ('CMake'), + ('CMU-style'), + ('CNRI-Python'), + ('CNRI-Python-GPL-Compatible'), + ('Combined_OpenSSL+SSLeay'), + ('CompuServe'), + ('Comtrol'), + ('Condor-1.0'), + ('Condor-1.1'), + ('CopyLeft[1]'), + ('CopyLeft[2]'), + ('CPL'), + ('CPL-0.5'), + ('CPL-1.0'), + ('CPOL'), + ('CPOL-1.02'), + ('Cryptogams'), + ('CUA-OPL-1.0'), + ('CUPS'), + ('CUPS-EULA'), + ('Cylink-ISC'), + ('Cypress-FW'), + ('DARPA'), + ('DARPA-Cougaar'), + ('Debian-social-DFSG'), + ('Debian-SPI'), + ('Debian-SPI-style'), + ('D-FSL-1.0'), + ('DMTF'), + ('DOCBOOK'), + ('DOCBOOK-style'), + ('DPTC'), + ('DSCT'), + ('DSL'), + ('Dyade'), + ('EBT-style'), + ('ECL-1.0'), + ('ECL-2.0'), + ('eCos-2.0'), + ('EFL'), + ('EFL-1.0'), + ('EFL-2.0'), + ('eGenix'), + ('Empty-file-no-data!'), + ('Entessa'), + ('Epinions'), + ('Epson-EULA'), + ('Epson-PL'), + ('ErlPL-1.1'), + ('EUDatagrid'), + ('EUPL-1.0'), + ('EUPL-1.1'), + ('FaCE'), + ('Fair'), + ('Fair-style'), + ('FAL-1.0'), + ('FAL-1.3'), + ('FedoraCLA'), + ('Flash2xml-1.0'), + ('Flora'), + ('Flora-1.0'), + ('Flora-1.1'), + ('Frameworx'), + ('Frameworx-1.0'), + ('FreeBSD-Doc'), + ('Free-PL'), + ('Free-SW'), + ('FTL'), + ('FTL-style'), + ('Fujitsu'), + ('Garmin-EULA'), + ('Genivia(Commercial)'), + ('GFDL'), + ('GFDL-1.1'), + ('GFDL-1.1+'), + ('GFDL-1.2'), + ('GFDL-1.2+'), + ('GFDL-1.3'), + ('GFDL-v1.2'), + ('Ghostscript-GPL-1.1'), + ('Giftware'), + ('GNU-copyleft'), + ('GNU-Ghostscript'), + ('GNU-javamail-exception'), + ('GNU-Manpages'), + ('Google-BSD'), + ('Govt-restrict'), + ('GPL'), + ('GPL-1.0'), + ('GPL-1.0+'), + ('GPL-2.0'), + ('GPL-2.0+'), + ('GPL-2.0:3.0'), + ('GPL-2.0+:3.0'), + ('GPL-2.0+KDEupgradeClause'), + ('GPL-2.0-with-autoconf-exception'), + ('GPL-2.0-with-bison-exception'), + ('GPL-2.0+-with-bison-exception'), + ('GPL-2.0-with-classpath-exception'), + ('GPL-2.0+-with-classpath-exception'), + ('GPL-2.0-with-font-exception'), + ('GPL-2.0-with-GCC-exception'), + ('GPL-2.1[sic]'), + ('GPL-2.1+[sic]'), + ('GPL-3?'), + ('GPL-3.0'), + ('GPL-3.0+'), + ('GPL-3.0-with-autoconf-exception'), + ('GPL-3.0-with-GCC-exception'), + ('GPL-3.0+-with-GCC-exception'), + ('GPL-Meta'), + ('GPL-or-LGPL'), + ('GPL(rms)'), + ('GPL-with-autoconf-exception'), + ('gSOAP'), + ('gSOAP-1.3b'), + ('H2'), + ('H2-1.0'), + ('Hacktivismo'), + ('Hauppauge'), + ('Helix/RealNetworks-EULA'), + ('HPND'), + ('IBM-Courier'), + ('IBM-JCL'), + ('IBM-pibs'), + ('IBM-reciprocal'), + ('ID-EULA'), + ('IDPL'), + ('IDPL-1.0'), + ('IEEE-Doc'), + ('IETF'), + ('IETF-style'), + ('IJG'), + ('ImageMagick'), + ('ImageMagick(Apache)'), + ('ImageMagick-style'), + ('Imlib2'), + ('InfoSeek'), + ('info-zip'), + ('InnerNet'), + ('InnerNet-2.00'), + ('InnerNet-style'), + ('Intel-EULA'), + ('Intel(RESTRICTED)'), + ('Intel-WLAN'), + ('Interbase-1.0'), + ('Interbase-PL'), + ('Interlink-EULA'), + ('Intranet-only'), + ('IOS'), + ('IoSoft(COMMERCIAL)'), + ('IPA'), + ('IPA-Font-EULA'), + ('IPL'), + ('IPL-1.0'), + ('IPL-2.0'), + ('IPTC'), + ('IronDoc'), + ('ISC'), + ('Jabber'), + ('Java-WSDL4J'), + ('Java-WSDL-Policy'), + ('Java-WSDL-Schema'), + ('Java-WSDL-Spec'), + ('JISP'), + ('JPNIC'), + ('JSON'), + ('KDE'), + ('Keyspan-FW'), + ('KnowledgeTree-1.1'), + ('Knuth-style'), + ('Lachman-Proprietary'), + ('Larabie-EULA'), + ('LDP-1A'), + ('LDP-2.0'), + ('Legato'), + ('Leptonica'), + ('LGPL'), + ('LGPL-1.0'), + ('LGPL-1.0+'), + ('LGPL-2.0'), + ('LGPL-2.0+'), + ('LGPL-2.1'), + ('LGPL-2.1+'), + ('LGPL-2.1+-KDE-exception'), + ('LGPL-3?'), + ('LGPL-3.0'), + ('LGPL-3.0+'), + ('LIBGCJ'), + ('Libpng'), + ('Link-exception'), + ('LinuxDoc'), + ('Linux-HOWTO'), + ('Logica-OSL-1.0'), + ('LPL-1.0'), + ('LPL-1.02'), + ('LPPL'), + ('LPPL-1.0'), + ('LPPL-1.0+'), + ('LPPL-1.1'), + ('LPPL-1.1+'), + ('LPPL-1.2'), + ('LPPL-1.2+'), + ('LPPL-1.3'), + ('LPPL-1.3+'), + ('LPPL-1.3a'), + ('LPPL-1.3a+'), + ('LPPL-1.3b'), + ('LPPL-1.3b+'), + ('LPPL-1.3c'), + ('LPPL-1.3c+'), + ('MacroMedia-RPSL'), + ('Macrovision'), + ('Macrovision-EULA'), + ('Majordomo'), + ('Majordomo-1.1'), + ('Mandriva'), + ('Mellanox'), + ('MetroLink'), + ('MetroLink-nonfree'), + ('Mibble'), + ('Mibble-2.8'), + ('Microsoft'), + ('Migemo'), + ('MindTerm'), + ('MirOS'), + ('MITEM'), + ('MitreCVW-style'), + ('Motosoto'), + ('MPEG3-decoder'), + ('MPL'), + ('MPL-1.0'), + ('MPL-1.1'), + ('MPL-1.1+'), + ('MPL-1.1-style'), + ('MPL-2.0'), + ('MPL-2.0-no-copyleft-exception'), + ('MPL-EULA-1.1'), + ('MPL-EULA-2.0'), + ('MPL-EULA-3.0'), + ('MPL-style'), + ('M-Plus-Project'), + ('MRL'), + ('MS-indemnity'), + ('MS-LPL'), + ('MS-LRL'), + ('Multics'), + ('MX4J'), + ('MX4J-1.0'), + ('MySQL-0.3'), + ('MySQL/FLOSS'), + ('MySQL-style'), + ('NASA'), + ('NASA-1.3'), + ('Naumen'), + ('NBPL-1.0'), + ('nCipher'), + ('NCSA'), + ('NESSUS-EULA'), + ('NGPL'), + ('Nokia'), + ('No_license_found'), + ('non-ATT-BSD'), + ('None'), + ('NOSL-1.0'), + ('Not-for-sale!'), + ('Not-Free!'), + ('Not-Internet'), + ('Not-OpenSource!'), + ('NOT-Open-Source!'), + ('NOT-public-domain'), + ('Novell'), + ('Novell-EULA'), + ('NPL'), + ('NPL-1.0'), + ('NPL-1.1'), + ('NPL-1.1+'), + ('NPL-EULA'), + ('NPOSL-3.0'), + ('NRL'), + ('NTP'), + ('OASIS'), + ('OCL'), + ('OCL-1.0'), + ('OCLC'), + ('OCLC-1.0'), + ('OCLC-2.0'), + ('OCL-style'), + ('ODbL-1.0'), + ('ODL'), + ('OFL-1.0'), + ('OFL-1.1'), + ('OGTSL'), + ('OLDAP'), + ('OLDAP-1.1'), + ('OLDAP-1.2'), + ('OLDAP-1.3'), + ('OLDAP-1.4'), + ('OLDAP-2.0'), + ('OLDAP-2.0.1'), + ('OLDAP-2.1'), + ('OLDAP-2.2'), + ('OLDAP-2.2.1'), + ('OLDAP-2.2.2'), + ('OLDAP-2.3'), + ('OLDAP-2.4'), + ('OLDAP-2.5'), + ('OLDAP-2.6'), + ('OLDAP-2.7'), + ('OLDAP-2.8'), + ('OLDAP-style'), + ('OMF'), + ('Ontopia'), + ('OpenCASCADE-PL'), + ('OpenGroup'), + ('OpenGroup-Proprietary'), + ('OpenMarket'), + ('Open-PL'), + ('Open-PL-0.4'), + ('Open-PL-1.0'), + ('Open-PL-style'), + ('OPL-1.0'), + ('Oracle-Berkeley-DB'), + ('O''Reilly'), + ('O''Reilly-style'), + ('OSD'), + ('OSL'), + ('OSL-1.0'), + ('OSL-1.1'), + ('OSL-2.0'), + ('OSL-2.1'), + ('OSL-3.0'), + ('Paradigm'), + ('Patent-ref'), + ('PDDL-1.0'), + ('Phorum'), + ('PHP-3.0'), + ('PHP-style'), + ('Piriform'), + ('Pixware-EULA'), + ('Polyserve-CONFIDENTIAL'), + ('Postfix'), + ('PostgreSQL'), + ('Powder-Proprietary'), + ('Princeton'), + ('Princeton-style'), + ('Proprietary!'), + ('Public-domain'), + ('Public-domain(C)'), + ('Public-domain-ref'), + ('Public-Use'), + ('Public-Use-1.0'), + ('Python'), + ('Python-2.0'), + ('Python-2.0.1'), + ('Python-2.0.2'), + ('Python-2.1.1'), + ('Python-2.1.3'), + ('Python-2.2'), + ('Python-2.2.3'), + ('Python-2.2.7'), + ('Python-2.3'), + ('Python-2.3.7'), + ('Python-2.4.4'), + ('Python-style'), + ('Qmail'), + ('QPL'), + ('QPL-1.0'), + ('QT(Commercial)'), + ('QuarterDeck'), + ('Quest-EULA'), + ('RCSL'), + ('RCSL-1.0'), + ('RCSL-2.0'), + ('RCSL-3.0'), + ('RealNetworks-EULA'), + ('RealNetworks-Unknown'), + ('RedHat-EULA'), + ('Redland'), + ('Restricted-rights'), + ('RHeCos-1.1'), + ('Riverbank-EULA'), + ('RPL-1.5'), + ('RPSL'), + ('RPSL-1.0'), + ('RPSL-2.0'), + ('RPSL-3.0'), + ('RSCPL'), + ('Ruby'), + ('SAX-PD'), + ('SciTech'), + ('SCO(commercial)'), + ('SCSL'), + ('SCSL-2.3'), + ('SCSL-3.0'), + ('SCSL-TSA'), + ('SCSL-TSA-1.0'), + ('See-doc(OTHER)'), + ('See-file'), + ('See-file(COPYING)'), + ('See-file(LICENSE)'), + ('See-file(README)'), + ('See-URL'), + ('Sendmail'), + ('SGI'), + ('SGI-B-1.0'), + ('SGI-B-1.1'), + ('SGI-B-2.0'), + ('SGI-Freeware'), + ('SGI_GLX'), + ('SGI-Proprietary'), + ('SGI-style'), + ('SGML'), + ('SimPL-2.0'), + ('SISSL'), + ('SISSL-1.1'), + ('SISSL-1.2'), + ('Skype-EULA'), + ('Sleepycat(Non-commercial)'), + ('SMLNJ'), + ('SNIA'), + ('SNIA-1.0'), + ('SNIA-1.1'), + ('SpikeSource'), + ('SPL'), + ('SPL-1.0'), + ('Stanford'), + ('Stanford-style'), + ('SugarCRM-1.1.3'), + ('Sun-BCLA-1.5.0'), + ('Sun-EULA'), + ('Sun-IP'), + ('Sun-Java'), + ('Sun(Non-commercial)'), + ('SunPro'), + ('Sun(RESTRICTED)'), + ('Sun-RPC'), + ('Sun-SCA'), + ('Sun(tm)'), + ('SW-Research'), + ('Tapjoy'), + ('Tektronix'), + ('Tektronix-style'), + ('Trademark-ref'), + ('Trident-EULA'), + ('Trolltech'), + ('U-BC'), + ('U-Cambridge'), + ('U-Cambridge-style'), + ('UCAR'), + ('UCAR-style'), + ('U-Chicago'), + ('U-Columbia'), + ('UCWare-EULA'), + ('U-Del'), + ('U-Del-style'), + ('U-Monash'), + ('UnclassifiedLicense'), + ('Unidex'), + ('UnitedLinux-EULA'), + ('Unlicense'), + ('unRAR restriction'), + ('URA(gov''t)'), + ('USC'), + ('USC(Non-commercial)'), + ('USC-style'), + ('US-Export-restrict'), + ('U-Utah'), + ('U-Wash(Free-Fork)'), + ('VIM'), + ('Vixie'), + ('Vixie-license'), + ('VMware-EULA'), + ('VSL-1.0'), + ('Wash-U-style'), + ('Watcom'), + ('Watcom-1.0'), + ('WebM'), + ('Wintertree'), + ('WordNet-3.0'), + ('WTFPL'), + ('WTI(Not-free)'), + ('WXwindows'), + ('X11'), + ('Xerox'), + ('Xerox-style'), + ('XFree86'), + ('XFree86-1.0'), + ('XFree86-1.1'), + ('Ximian'), + ('Ximian-1.0'), + ('XMLDB-1.0'), + ('Xnet'), + ('XOPEN-EULA'), + ('X/Open-style'), + ('Yahoo-EULA'), + ('YaST(SuSE)'), + ('YPL'), + ('YPL-1.0'), + ('YPL-1.1'), + ('Zend-2.0'), + ('Zeus'), + ('Zimbra'), + ('Zimbra-1.2'), + ('Zimbra-1.3'), + ('Zlib'), + ('ZoneAlarm-EULA'), + ('ZPL-1.0'), + ('ZPL-1.1'), + ('ZPL-2.0'), + ('ZPL-2.1'), + ('Zveno');