RFC 2731
Encoding Dublin Core Metadata in HTML
RFC 2731: Encoding Dublin Core Metadata in HTML π
Okay bestie, this one is RFC 2731 π¦ It was written by J. Kunze from the Dublin Core Metadata Initiative and published in December 1999 through the Network Working Group. It's Informational, so it's giving "here's some helpful info," not an official Internet standard π The header doesn't list anything it obsoletes or updates, so it's standing on its own β¨
Status of This Memo
This memo gives information to the Internet community πΈ It doesn't specify an Internet standard of any kind, and it can be distributed without limits π
Copyright Notice
Copyright (C) The Internet Society (1999). All Rights Reserved. π₯
1. Abstract β¨
The Dublin Core [DC1] is a small set of metadata elements for describing information resources. This doc explains how those elements are written using the META and LINK tags of HTML [HTML4.0] π A sequence of metadata elements embedded in an HTML file is taken to be a description of that file π§ It also shows examples that play nicely with current software that indexes, displays, and manipulates metadata, like [SWISH-E], [freeWAIS-sf2.0], [GLIMPSE], [HARVEST], [ISEARCH], etc., plus the Perl [PERL] scripts in the appendix π
2. HTML, Dublin Core, and Non-Dublin Core Metadata π
Okay so the Dublin Core (DC) metadata initiative [DCHOME] made a small set of resource description categories [DC1], also called elements of metadata (literally, data about data) π€ Metadata elements are usually small compared to the thing they describe, and if the resource format allows it, they can be embedded right inside it π«Ά Two formats that do this are HTML (Hypertext Markup Language) and XML (Extensible Markup Language). HTML is super popular right now, but XML [XML] together with the Resource Description Framework [RDF] is promising a way more expressive way to encode metadata once it's standardized π The [RDF] spec even describes how to use RDF inside an HTML document with an abbreviated syntax π¦
This document explains how to encode metadata using HTML 4.0 [HTML4.0] π It's not about element semantics, which are defined somewhere else. Some semantics get mentioned for illustration, but you should never treat the semantics in here as definitive π
HTML encoding lets DC elements be mixed in with non-DC elements, as long as the mixing follows the rules for those non-DC elements π A DC element is marked by the prefix "DC", and a non-DC element uses a different prefix. For example, the prefix "AC" is used with elements from the A-Core [AC] πΈ
3. The META Tag π
The META tag of HTML is built to encode a named metadata element π Each element describes one aspect of a document or other information resource. For example, this tagged metadata element:
<meta name = "DC.Creator"
content = "Simpson, Homer">
says that Homer Simpson is the Creator, where the element named Creator is defined in the DC element set π In the more general form:
<meta name = "PREFIX.ELEMENT_NAME"
content = "ELEMENT_VALUE">
the capitalized words are meant to get swapped out in real descriptions. So in the example above:
- ELEMENT_NAME was: Creator
- ELEMENT_VALUE was: Simpson, Homer
- and PREFIX was: DC
Inside a META tag, the first letter of a Dublin Core element name gets capitalized π DC doesn't put any restriction on letter case in an element value, and any number of META tagged elements can show up together in any order β¨ You can have more than one DC element with the same name, and each DC element is optional π The next example is a book description with two authors, two titles, and no other metadata π
<meta name = "DC.Title"
content = "The Communist Manifesto">
<meta name = "DC.Creator"
content = "Marx, K.">
<meta name = "DC.Creator"
content = "Engels, F.">
<meta name = "DC.Title"
content = "Capital">
The prefix "DC" comes before each Dublin Core element encoded with META, and a period (.) separates it from the element name that follows π¦ Each non-DC element should be encoded with a prefix that can be used to trace where it came from and how it's defined. The link between a prefix and its element definition is made with the LINK tag, which the next section covers π«Ά Non-DC elements, like Email from the A-Core [AC], can show up alongside DC elements, like this:
<meta name = "DC.Creator"
content = "Da Costa, José">
<meta name = "AC.Email"
content = "dacostaj@peoplesmail.org">
<meta name = "DC.Title"
content = "Jesse "The Body" Ventura--A Biography">
This example also shows how some special characters get encoded π The author name in the first element has a diacritic written as an HTML character entity reference. In this case that's an accented letter E π Similarly, the last line has two double-quote characters encoded so they don't get mistaken for the delimiters around element content π
Part 1 of 4 π Next up: Section 4 (The LINK Tag) and everything after it, so stay tuned, bestie! π
7. Encoding Dublin Core Elements β¨
okay bestie, this section is the fun part π It's just a bunch of tiny Dublin Core encoding examples, sorted by element, so you can see exactly what each one looks like in the wild π¦
Title (name given to the resource)
<meta name = "DC.Title"
content = "Polycyclic aromatic hydrocarbon contamination">
<meta name = "DC.Title"
content = "Crime and Punishment">
<meta name = "DC.Title"
content = "Methods of Information in Medicine, Vol 32, No 4">
<meta name = "DC.Title"
content = "Still life #4 with flowers">
<meta name = "DC.Title"
lang = "de"
content = "Das Wohltemperierte Klavier, Teil I">
Creator (entity that created the content)
<meta name = "DC.Creator"
content = "Gogh, Vincent van">
<meta name = "DC.Creator"
content = "van Gogh, Vincent">
<meta name = "DC.Creator"
content = "Mao Tse Tung">
<meta name = "DC.Creator"
content = "Mao, Tse Tung">
<meta name = "DC.Creator"
content = "Plato">
<meta name = "DC.Creator"
lang = "fr"
content = "Platon">
<meta name = "DC.Creator.Director"
content = "Sturges, Preston">
<meta name = "DC.Creator.Writer"
content = "Hecht, Ben">
<meta name = "DC.Creator.Producer"
content = "Chaplin, Charles">
Subject (topic or keyword)
<meta name = "DC.Subject"
content = "heart attack">
<meta name = "DC.Subject"
scheme = "MESH"
content = "Myocardial Infarction; Pericardial Effusion">
<meta name = "DC.Subject"
content = "vietnam war">
<meta name = "DC.Subject"
scheme = "LCSH"
content = "Vietnamese Conflict, 1961-1975">
<meta name = "DC.Subject"
content = "Friendship">
<meta name = "DC.Subject"
scheme = "ddc"
content = "158.25">
Description (account, summary, or abstract of the content)
<meta name = "DC.Description"
lang = "en"
content = "The Author gives some Account of Himself and Family
-- His First Inducements to Travel -- He is
Shipwrecked, and Swims for his Life -- Gets safe on
Shore in the Country of Lilliput -- Is made a
Prisoner, and carried up the Country">
<meta name = "DC.Description"
content = "A tutorial and reference manual for Java.">
<meta name = "DC.Description"
content = "Seated family of five, coconut trees to the left,
sailboats moored off sandy beach to the right,
with volcano in the background.">
Publisher (entity that made the resource available)
<meta name = "DC.Publisher"
content = "O'Reilly">
<meta name = "DC.Publisher"
content = "Digital Equipment Corporation">
<meta name = "DC.Publisher"
content = "University of California Press">
<meta name = "DC.Publisher"
content = "State of Florida (USA)">
Contributor (other entity that made a contribution)
<meta name = "DC.Contributor"
content = "Curie, Marie">
<meta name = "DC.Contributor.Photographer"
content = "Adams, Ansel">
<meta name = "DC.Contributor.Artist"
content = "Sendak, Maurice">
<meta name = "DC.Contributor.Editor"
content = "Starr, Kenneth">
Date (of an event in the life of the resource; [WTN8601] recommended)
<meta name = "DC.Date"
content = "1972">
<meta name = "DC.Date"
content = "1998-05-14">
<meta name = "DC.Date"
scheme = "WTN8601"
content = "1998-05-14">
<meta name = "DC.Date.Created"
content = "1998-05-14">
<meta name = "DC.Date.Available"
content = "1998-05-21">
<meta name = "DC.Date.Valid"
content = "1998-05-28">
<meta name = "DC.Date.Created"
content = "triassic">
<meta name = "DC.Date.Acquired"
content = "1957">
<meta name = "DC.Date.Accepted"
scheme = "WTN8601"
content = "1998-12-02T16:59">
<meta name = "DC.Date.DataGathered"
scheme = "ISO8601"
content = "98-W49-3T1659">
<meta name = "DC.Date.Issued"
scheme = "ANSI.X3.X30-1985"
content = "19980514">
Type (nature, genre, or category; [DCT1] recommended)
<meta name = "DC.Type"
content = "poem">
<meta name = "DC.Type"
scheme = "DCT1"
content = "software">
<meta name = "DC.Type"
content = "software program source code">
<meta name = "DC.Type"
content = "interactive video game">
<meta name = "DC.Type"
scheme = "DCT1"
content = "dataset">
<meta name = "DC.Type"
content = "web home page">
<meta name = "DC.Type"
content = "web bibliography">
<meta name = "DC.Type"
content = "painting">
<meta name = "DC.Type"
content = "image; woodblock">
<meta name = "DC.Type"
scheme = "AAT"
content = "clipeus (portrait)">
<meta name = "DC.Type"
lang = "en-US"
content = "image; advertizement">
<meta name = "DC.Type"
scheme = "DCT1"
content = "event">
<meta name = "DC.Type"
content = "event; periodic">
Format (physical or digital data format, plus optional dimensions)
<meta name = "DC.Format"
content = "text/xml">
<meta name = "DC.Format"
scheme = "IMT"
content = "text/xml">
<meta name = "DC.Format"
scheme = "IMT"
content = "image/jpeg">
<meta name = "DC.Format"
content = "A text file with mono-spaced tables and diagrams.">
<meta name = "DC.Format"
content = "video/mpeg; 14 minutes">
<meta name = "DC.Format"
content = "unix tar archive, gzip compressed; 1.5 Mbytes">
<meta name = "DC.Format"
content = "watercolor; 23 cm x 31 cm">
Identifier (of the resource)
<meta name = "DC.Identifier"
content = "http://foo.bar.org/zaf/">
<meta name = "DC.Identifier"
content = "urn:ietf:rfc:1766">
<meta name = "DC.Identifier"
scheme = "ISBN"
content = "1-56592-149-6">
<meta name = "DC.Identifier"
scheme = "LCCN"
content = "67-26020">
<meta name = "DC.Identifier"
scheme = "DOI"
content = "10.12345/33-824688ab">
Source (reference to the resource's origin)
<meta name = "DC.Source"
content = "Shakespeare's Romeo and Juliet">
<meta name = "DC.Source"
content = "http://a.b.org/manon/">
Language (of the content of the resource; [RFC1766] recommended)
<meta name = "DC.Language"
content = "en">
<meta name = "DC.Language"
scheme = "rfc1766"
content = "en">
<meta name = "DC.Language"
scheme = "ISO639-2"
content = "eng">
<meta name = "DC.Language"
scheme = "rfc1766"
content = "en-US">
<meta name = "DC.Language"
content = "zh">
<meta name = "DC.Language"
content = "ja">
<meta name = "DC.Language"
content = "es">
<meta name = "DC.Language"
content = "de">
<meta name = "DC.Language"
content = "german">
<meta name = "DC.Language"
lang = "fr"
content = "allemand">
Relation (reference to a related resource)
<meta name = "DC.Relation.IsPartOf"
content = "http://foo.bar.org/abc/proceedings/1998/">
<meta name = "DC.Relation.IsFormatOf"
content = "http://foo.bar.org/cd145.sgml">
<meta name = "DC.Relation.IsVersionOf"
content = "http://foo.bar.org/draft9.4.4.2">
<meta name = "DC.Relation.References"
content = "urn:isbn:1-56592-149-6">
<meta name = "DC.Relation.IsBasedOn"
content = "Shakespeare's Romeo and Juliet">
<meta name = "DC.Relation.Requires"
content = "LWP::UserAgent; HTML::Parse; URI::URL;
Net::DNS; Tk::Pixmap; Tk::Bitmap; Tk::Photo">
Coverage (extent or scope of the content)
<meta name = "DC.Coverage"
content = "US civil war era; 1861-1865">
<meta name = "DC.Coverage"
content = "Columbus, Ohio, USA; Lat: 39 57 N Long: 082 59 W">
<meta name = "DC.Coverage"
scheme = "TGN"
content = "Columbus (C,V)">
<meta name = "DC.Coverage.Jurisdiction"
content = "Commonwealth of Australia">
Rights (text or identifier of a rights management statement)
<meta name = "DC.Rights"
lang = "en"
content = "Copyright Acme 1999 - All rights reserved.">
<meta name = "DC.Rights"
content = "http://foo.bar.org/cgi-bin/terms">
8. Security Considerations π
okay this part is SERIOUS bestie, so read it properly π The syntax rules for encoding Dublin Core metadata in HTML that are documented here don't pose any direct risk to computers or networks. BUT people can totally use these rules to encode metadata that's inaccurate or even deliberately misleading (that's the "index spam" chaos π). Honestly though, that's a general pattern of HTML META tag abuse, not something unique to Dublin Core. Even the old-school metadata schemes (like [MARC]) aren't immune to inaccuracy, even though they're usually used in places where the quality is way higher than your average website π
Systems that process metadata encoded with META tags need to think about accuracy and validity as part of their design and implementation. Users of those systems need to think about the assumptions baked into that design too π§ There are some approaches that might be relevant for certain applications, like adding statements of metadata provenance, signing metadata with digital signatures, and automating parts of metadata creation. But those are way outside the scope of this document and the underlying META tag syntax it describes, so don't go looking for them here π«Ά
9. Appendix -- Perl Scripts that Manipulate HTML Encoded Metadata π§
okay the appendix is giving hands-on energy π₯ This section has two simple Perl programs that work with versions 4 and 5 of the Perl [PERL] scripting language interpreter. You can take them and freely adapt them for local organizational needs, research proposals, venture capital bids, etc. honestly the possibilities are endless β¨ A bunch of applications are within easy reach if you build on these scripts.
Script 1: Metadata Format Conversion
Here's a simple Perl script that correctly recognizes every example of metadata encoding in this document. It shows how a modest amount of scripting can turn into a utility that converts metadata from one format to another. Minor changes are enough to support a number of output formats π
#!/depot/bin/perl
#
# This simple perl script extracts metadata embedded in an HTML file
# and outputs it in an alternate format. Issues warning about missing
# element name or value.
#
# Handles mixed case tags and attribute values, one per line or spanning
# several lines. Also handles a quoted string spanning multiple lines.
# No error checking. Does not tolerate more than one "<meta" per line.
print "@(urc;\n";
while (<>) {
next if (! /<meta/i);
($meta) = /(<meta.*$)/i;
if (! /<meta.*>/i) {
while (<>) {
$meta .= $_;
last if (/>/);
}
}
$name = $meta =~ /name\s*=\s*"([^"]*)"/i
? $1 : "MISSING ELEMENT NAME";
$content = $meta =~ /content\s*=\s*"([^"]*)"/i
? $1 : "MISSING ELEMENT VALUE";
($scheme) = $meta =~ /scheme\s*=\s*"([^"]*)"/i;
($lang) = $meta =~ /lang\s*=\s*"([^"]*)"/i;
if ($lang || $scheme) {
$mod = " ($lang";
if (! $scheme)
{ $mod .= ")"; }
elsif (! $lang)
{ $mod .= "$scheme)" }
else
{ $mod .= ", $scheme)"; }
}
else
{ $mod = ""; }
print " @|$name$mod; $content\n";
}
print "@)urc;\n";
# ---- end of Perl script ----
Okay so when you run the conversion script on the metadata file from the LINK tag section (section 4), this is the output you get ππ
@(urc;
@|DC.Title; A Dirge
@|DC.Creator; Shelley, Percy Bysshe
@|DC.Type; poem
@|DC.Date; 1820
@|DC.Format; text/html
@|DC.Language; en
@)urc;
Script 2: Automated Metadata Creation π§β¨
Okay bestie, making high-quality metadata can be seriously expensive if you don't have automation helping out π Think about things like filling in pre-set or computed defaults, checking syntax, verifying value ranges, spell checking, and so on. It's a lot!! π
So imagine a script that cuts a single provider's metadata workload down to just the title of each document. That would be iconic, right? π Below is exactly that kind of script. It lets the provider of an HTML document abbreviate an entire embedded resource description with one HTML comment statement that looks like this:
<!--metablock Little Red Riding Hood -->
Our script treats this statement in a special way, as a kind of "metadata block" declaration with an attached title. The general form is:
<!--metablock TITLE_OF_DOCUMENT -->
This statement works a lot like a "Web server-side include." The script swaps it out for a fully-specified block of metadata and also triggers other replacements. Once it's installed, the script can output HTML files that fit right into your production Web server procedures. Main character energy π
The individual provider keeps a separate "template" file with pre-set values for metadata elements that don't change very often. If the provider's needs are simple enough, the only element values that differ from one document to the next (apart from the title) can be generated automatically. Using the script, values can be referenced as variables from inside the template or inside the document. Our variable references look like "(--mbVARNAME)", and here's what they look like inside a template:
<title> (--mbtitle) </title>
<meta name = "DC.Creator"
content = "Simpson, Homer">
<meta name = "DC.Title"
content = "(--mbtitle)">
<meta name = "DC.Date.Created"
content = "(--mbfilemodtime)">
<meta name = "DC.Identifier"
content = "(--mbbaseURL)/(--mbfilename)">
<meta name = "DC.Format"
content = "text/html; (--mbfilesize)">
<meta name = "DC.Language"
content = "(--mblanguage)-BUREAUCRATESE">
<meta name = "RC.MetadataAuthority"
content = "Springfield Nuclear">
<link rel = "schema.DC"
href = "http://purl.org/DC/elements/1.0/">
<link rel = "schema.RC"
href = "http://nukes.org/ReactorCore/rc">
This template is the metadata block that will describe the document once the variable references get replaced with real values πΈ By the script's conventions, the following variables get replaced in both the template and the document:
(--mbfilesize) size of the final output file
(--mbtitle) title of the document
(--mblanguage) language of the document
(--mbbaseURL) beginning part of document identifier
(--mbfilename) last part (minus .html) of identifier
(--mbfilemodtime) last modification date of the document
Here's an example HTML file to run the script on π
<html>
<head>
<!--metablock Nutritional Allocation Increase -->
<meta name = "DC.Type"
content = "Memorandum">
</head>
<body>
<p>
From: Acting Shift Supervisor
To: Plant Control Personnel
RE: (--mbtitle)
Date: (--mbfilemodtime)
<p>
Pursuant to directive DOH:10.2001/405aec of article B-2022,
subsection 48.2.4.4.1c regarding staff morale and employee
productivity standards, the current allocation of doughnut
acquisition funds shall be increased effective immediately.
</body>
</html>
Here's the genius part π Because replacement happens throughout the whole document, the provider only has to type the title once instead of twice. Normally you'd have to enter the title in the HTML head and again in the HTML body, which is so annoying π After running the script, the file above turns into this:
<html>
<head>
<title> Nutritional Allocation Increase </title>
<meta name = "DC.Creator"
content = "Simpson, Homer">
<meta name = "DC.Title"
content = "Nutritional Allocation Increase">
<meta name = "DC.Date.Created"
content = "1999-03-08">
<meta name = "DC.Identifier"
content = "http://moes.bar.com/doh/homer.html">
<meta name = "DC.Format"
content = "text/html; 1320 bytes">
<meta name = "DC.Language"
content = "en-BUREAUCRATESE">
<meta name = "RC.MetadataAuthority"
content = "Springfield Nuclear">
<link rel = "schema.DC"
href = "http://purl.org/DC/elements/1.0/">
<link rel = "schema.RC"
href = "http://nukes.org/ReactorCore/rc">
<meta name = "DC.Type"
content = "Memorandum">
</head>
<body>
<p>
From: Acting Shift Supervisor
To: Plant Control Personnel
RE: Nutritional Allocation Increase
Date: 1999-03-08
<p>
Pursuant to directive DOH:10.2001/405aec of article B-2022,
subsection 48.2.4.4.1c regarding staff morale and employee
productivity standards, the current allocation of doughnut
acquisition funds shall be increased effective immediately.
</body>
</html>
Okay, here's the script that makes this transformation happen π
#!/depot/bin/perl
#
# This Perl script processes metadata block declarations of the form
# <!--metablock TITLE_OF_DOCUMENT --> and variable references of the
# form (--mbVARNAME), replacing them with full metadata blocks and
# variable values, respectively. Requires a "template" file.
# Outputs an HTML file.
#
# Invoke this script with a single filename argument, "foo". It creates
# an output file "foo.html" using a temporary working file "foo.work".
# The size of foo.work is measured after variable replacement, and is
# later inserted into the file in such a way that the file's size does
# not change in the process. Has little or no error checking.
$infile = shift;
open(IN, "< $infile")
or die("Could not open input file \"$infile\"");
$workfile = "$infile.work";
unlink($workfile);
open(WORK, "+> $workfile")
or die("Could not open work file \"$workfile\"");
@offsets = (); # records locations for late size replacement
$title = ""; # gets the title during metablock processing
$language = "en"; # pre-set language here (not in the template)
$baseURL = "http://moes.bar.com/doh"; # pre-set base URL here also
$filename = "$infile.html"; # final output filename
$filesize = "(--mbfilesize)"; # replaced late (separate pass)
($year, $month, $day) = (localtime( (stat IN) [9] ))[5, 4, 3];
$filemodtime = sprintf "%s-%02s-%02s", 1900 + $year, 1 + $month, $day;
sub putout { # outputs current line with variable replacement
if (! /\(--mb/) {
print WORK;
return;
}
if (/\(--mbfilesize\)/) # remember where it was
{ push @offsets, tell WORK; } # but don't replace yet
s/\(--mbtitle\)/$title/g;
s/\(--mblanguage\)/$language/g;
s/\(--mbbaseURL\)/$baseURL/g;
s/\(--mbfilename\)/$filename/g;
s/\(--mbfilemodtime\)/$filemodtime/g;
print WORK;
}
while (<IN>) { # main loop for input file
if (! /(.*)<!--metablock\s*(.*)/) {
&putout;
next;
}
$title = $2;
$_ = $1;
&putout;
if ($title =~ s/\s*-->(.*)//) {
$remainder = $1;
}
else {
while (<IN>) {
$title .= $_;
last if (/(.*)\s*-->(.*)/);
}
$title .= $1;
$remainder = $2;
}
open(TPLATE, "< template")
or die("Could not open template file");
while (<TPLATE>) # subloop for template file
{ &putout; }
close(TPLATE);
$_ = $remainder;
&putout;
}
close(IN);
# Now replace filesize variables without altering total byte count.
select( (select(WORK), $| = 1) [0] ); # first flush output so we
if (($size = -s WORK) < 100000) # can get final file size
{ $scale = 0; } # and set scale factor or
else { # compute it, keeping width of size field low
for ($scale = 0; $size >= 1000; $scale++)
{ $size /= 1024; }
}
$filesize = sprintf "%7.7s %sbytes",
$size, (" ", "K", "M", "G", "T", "P") [$scale];
foreach $pos (@offsets) { # loop through saved size locations
seek WORK, $pos, 0; # read the line found there
$_ = <WORK>;
# $filesize must be exactly as wide as "(--mbfilesize)"
s/\(--mbfilesize\)/$filesize/g;
seek WORK, $pos, 0; # rewrite it with replacement
print WORK;
}
close(WORK);
rename($workfile, "$filename")
or die("Could not rename \"$workfile\" to \"$filename\"");
# ---- end of Perl script ----
10. Author's Address π¦
John A. Kunze
Center for Knowledge Management
University of California, San Francisco
530 Parnassus Ave, Box 0840
San Francisco, CA 94143-0840, USA
Fax: +1 415-476-4653
EMail: jak@ckm.ucsf.edu
11. References π
okay bestie, here's the whole reading list, every single source this doc leans on π
- [AAT] Art and Architecture Thesaurus, Getty Information Institute.
http://shiva.pub.getty.edu/aat_browser/ - [AC] The A-Core: Metadata about Content Metadata, (in progress)
http://metadata.net/ac/draft-iannella-admin-01.txt - [DC1] Weibel, S., Kunze, J., Lagoze, C. and M. Wolf, "Dublin Core Metadata for Resource Discovery", RFC 2413, September 1998.
ftp://ftp.isi.edu/in-notes/rfc2413.txt - [DCHOME] Dublin Core Initiative Home Page.
http://purl.org/DC/ - [DCPROJECTS] Projects Using Dublin Core Metadata.
http://purl.org/DC/projects/index.htm - [DCT1] Dublin Core Type List 1, DC Type Working Group, March 1999.
http://www.loc.gov/marc/typelist.html - [freeWAIS-sf2.0] The enhanced freeWAIS distribution, February 1999.
http://ls6-www.cs.uni-dortmund.de/ir/projects/freeWAIS-sf/ - [GLIMPSE] Glimpse Home Page.
http://glimpse.cs.arizona.edu/ - [HARVEST] Harvest Web Indexing.
http://www.tardis.ed.ac.uk/harvest/ - [HTML4.0] Hypertext Markup Language 4.0 Specification, April 1998.
http://www.w3.org/TR/REC-html40/ - [ISEARCH] Isearch Resources Page.
http://www.etymon.com/Isearch/ - [ISO639-2] Code for the representation of names of languages, 1996.
http://www.indigo.ie/egt/standards/iso639/iso639-2-en.html - [ISO8601] ISO 8601:1988(E), Data elements and interchange formats -- Information interchange -- Representation of dates and times, International Organization for Standardization, June 1988.
http://www.iso.ch/markete/8601.pdf - [MARC] USMARC Format for Bibliographic Data, US Library of Congress.
http://lcweb.loc.gov/marc/marc.html - [PERL] L. Wall, T. Christiansen, R. Schwartz, Programming Perl, Second Edition, O'Reilly, 1996.
- [RDF] Resource Description Framework Model and Syntax Specification, February 1999.
http://www.w3.org/TR/REC-rdf-syntax/ - [RFC1766] Alvestrand, H., "Tags for the Identification of Languages", RFC 1766, March 1996.
ftp://ftp.isi.edu/in-notes/rfc1766.txt - [SWISH-E] Simple Web Indexing System for Humans - Enhanced.
http://sunsite.Berkeley.EDU/SWISH-E/ - [TGN] Thesaurus of Geographic Names, Getty Information Institute.
http://shiva.pub.getty.edu/tgn_browser/ - [WTN8601] W3C Technical Note - Profile of ISO 8601 Date and Time Formats.
http://www.w3.org/TR/NOTE-datetime - [XML] Extensible Markup Language (XML).
http://www.w3.org/TR/REC-xml
12. Full Copyright Statement π
the legal bit, and it's important, so read it with me π«Ά
Copyright (C) The Internet Society (1999). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement π
funding moment π Funding for the RFC Editor function is currently provided by the Internet Society. π
π¦ where this page comes from
- ietf: rfc2731 1999-12
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms