An XML translation of Dan Graham's Schema

In 1966 conceptual artist Dan Graham composed a language based work entitled Schema. The artwork consisted of a formal procedure for how to describe a document, or a "set of pages," with no real reference to the content of that document. This schema, as he called it, shares a remarkable similarity with XML, invented over 30 years later.

The conceptual artists of the late 1960's and early 1970's were interested in the nonvisual abstraction of art and how artworks might be represented as information. Using language in a non-literary and non-poetic manner, they sought to continue the tradition of visual artists in a search for abstraction and minimalism. Many conceptual works of this time were simply words on paper, instructions, or thought experiments. Schema allowed the viewer to be aware of the material nature and structure of the document they were holding -- as well as any document they might hold. Using XML, I have created a machine-readable translation of his important 1966 work.

Schema was originally published in issue 5+6 of Aspen magazine. It is now being archived at UbuWeb and can be viewed here.

The Translation

Rather than starting from a group of documents or a particular domain, I wanted to translate this pre-existing conceptual writing into either a valid XML DTD or schema. Using an XML schema to accomplish this was tempting, mostly because Graham used the word schema to describe his approach and it seemed tidier to use an XML schema to do the translation. However I wanted this translation to be accessible and I felt DTDs were much more readable to the layperson. Though DTDs are less powerful and their usefulness is being questioned, their internal logic can be easily grasped. Therefore my conceptual translation was done as a DTD.

Since Graham, in his instructions for Schema, called it a schema for a "set of pages," that is what I've named my DTD. In Graham's original text, the elements were not in a specific order.  The most difficult part of the translation was converting Graham's loose structure to the strict nested structure of XML.  I think it works because it starts by describing the structure of the page itself then moves to the text and then to the structure of the text. To make the XML work, in certain places it was required that I invent descriptions where Graham had none. I invented the <DATA> tag to hold the content of <WORD>. In addition, I needed to add an NA attribute since many of the parts of speech were not covered in Graham's original work.

SET_OF_PAGES.dtd
(http://www.mbutler.org/schema/SET_OF_PAGES.dtd)

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT PAGE (TEXT)>
<!ATTLIST PAGE
PERIMETER CDATA #REQUIRED
PAPER_STOCK CDATA #IMPLIED
PAPER_WEIGHT CDATA #IMPLIED>

<!ELEMENT TEXT (COLUMN+)>
<!ATTLIST TEXT
PERCENT_OF_PAGE CDATA #REQUIRED
FONT CDATA #REQUIRED
DEPRESSIONS_ON_SURFACE CDATA #IMPLIED
FONT_SIZE CDATA #REQUIRED>

<!ELEMENT COLUMN (LINE+)>
<!ELEMENT LINE (WORD+)>
<!ELEMENT WORD (DATA)>
<!ELEMENT DATA (#PCDATA) >
<!ATTLIST WORD
CAPITALIZED (YES | NO) "NO"
ITALICIZED (YES | NO) "NO"
NUMBER_OF_LETTERS CDATA #REQUIRED
PART_OF_SPEECH (ADJECTIVE | ADVERB | CONJUNCTION | GERUND | INFINITIVE | NOUN | MATH_SYMBOL | NUMERAL | PREPOSITION | PRONOUN | PARTICIPLE | NA) "NA">

At this point the mission has been accomplished. This DTD expresses what Graham expressed in 1966 and I have a machine-readable version of his original work. It's interesting to note that Graham leaves out several descriptions that would be useful for a functioning XML document, such as a provision for verbs. I've attempted to stay true to his original vision as closely as possible. The project doesn't need to be carried out further, but it would be interesting to actually apply it to some documents.

The Application

I was tempted to mark up Graham's original document to continue in the conceptual tradition of reflexivity.  However for ease of use and greater comprehension, I've marked up a couple of simple nursery rhymes. I was afraid, with the complexity of XML and the DTD, that being too self-referential would just add to confusion. Also, because Schema called for the description of each and every word in a document, this would have been an extremely daunting task to mark up more than a few sentences. The domain of documents that this project calls for is literally any printed set of pages, so anything on paper can work. I typed out a couple of my favorite small rhymes to which to apply the DTD.

Poem #1
12 point Arial font on normal office paper

Fee! Fie! Foe! Fum!
I smell the blood of an Englishman.
Be he 'live or be he dead,
I'll grind his bones to make my bread.

Poem #2
12 point Arial font on normal office paper

Birds of a feather flock together,
And so will pigs and swine;
Rats and mice will have their choice,
And so will I have mine.

The task here is to represent the children's poem in XML, paying attention to what Graham was paying attention to in 1966. We must be aware of paper stock, font, parts of speech, etc. We must also be able to view the XML poem in a format that is the same as the original document. This was accomplished by transforming the XML file into HTML via a cascading style sheet.

To determine the part of speech of each word, I used the Parts of Speech Tagger developed by the Specialized Information Services Division (SIS) of the National Library of Medicine (NLM).

Here is the XML translation of Poem #1 utilizing the XML DTD translation of Graham's conceptual artwork.

fofum.xml
(http://www.mbutler.org/schema/fofum.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE PAGE SYSTEM "http://www.mbutler.org/schema/SET_OF_PAGES.dtd">
<?xml-stylesheet type="text/css" href="page.css"?>
<PAGE PERIMETER="20625 mm" PAPER_STOCK="30% recycled" PAPER_WEIGHT="75 g">
    <TEXT PERCENT_OF_PAGE="20" FONT="ARIAL" FONT_SIZE="12">
        <COLUMN>
            <LINE>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>Fee!</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>Fie!</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>Foe!</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>Fum!</DATA>
                </WORD>
            </LINE>
            <LINE>
                <WORD NUMBER_OF_LETTERS="1" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="PRONOUN">
                    <DATA>I</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="5" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>smell</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>the</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="5" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>blood</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="PREPOSITION">
                    <DATA>of</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>an</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="10" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>Englishman.</DATA>
                </WORD>
            </LINE>
            <LINE>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>Be</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>he</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="ADJECTIVE">
                    <DATA>'live</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="CONJUNCTION">
                    <DATA>or</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>be</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="PRONOUN">
                    <DATA>he</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="ADVERB">
                    <DATA>dead,</DATA>
                </WORD>
            </LINE>
            <LINE>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="PRONOUN">
                    <DATA>I'll</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="5" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>grind</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="PRONOUN">
                    <DATA>his</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="5" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>bones</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="INFINITIVE">
                <DATA>to</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>make</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="PRONOUN">
                    <DATA>my</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="5" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>bread.</DATA>
                </WORD>
            </LINE>
        </COLUMN>
    </TEXT>
</PAGE>

Here is the XML translation of Poem #2 utilizing the XML DTD translation of Graham's conceptual artwork.

birds.xml
(http://www.mbutler.org/schema/birds.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE PAGE SYSTEM "http://www.mbutler.org/schema/SET_OF_PAGES.dtd">
<?xml-stylesheet type="text/css" href="page.css"?>
<PAGE PERIMETER="20625 mm" PAPER_STOCK="30% recycled" PAPER_WEIGHT="75 g">
    <TEXT PERCENT_OF_PAGE="20" FONT="ARIAL" FONT_SIZE="12">
        <COLUMN>
            <LINE>
                <WORD NUMBER_OF_LETTERS="5" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>Birds</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="PREPOSITION">
                   <DATA>of</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="1" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>a</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="7" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>feather</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="5" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>flock</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="8" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="ADVERB">
                    <DATA>together,</DATA>
                </WORD>
            </LINE>
            <LINE>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="CONJUNCTION">
                    <DATA>And</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="ADVERB">
                    <DATA>so</DATA>
                 </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>will</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>pigs</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="CONJUNCTION">
                    <DATA>and</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="5" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>swine;</DATA>
                </WORD>
            </LINE>
            <LINE>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>Rats</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="CONJUNCTION">
                    <DATA>and</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>mice</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>will</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>have</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="5" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="PRONOUN">
                    <DATA>their</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="6" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NOUN">
                    <DATA>choice,</DATA>
                </WORD>
            </LINE>
            <LINE>
                <WORD NUMBER_OF_LETTERS="3" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="CONJUNCTION">
                    <DATA>And</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="2" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="ADVERB">
                    <DATA>so</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>will</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="1" CAPITALIZED="YES" ITALICIZED="NO" PART_OF_SPEECH="PRONOUN">
                    <DATA>I</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO" PART_OF_SPEECH="NA">
                    <DATA>have</DATA>
                </WORD>
                <WORD NUMBER_OF_LETTERS="4" CAPITALIZED="NO" ITALICIZED="NO">
                    <DATA>mine.</DATA>
                </WORD>
            </LINE>
        </COLUMN>
    </TEXT>
</PAGE>

The documents are represented the way Graham set in Schema, but to display it in it's original form in HTML, we need to use either XSLT or CSS to transform it. In this case I used CSS for its ease of use. Here is the style sheet I wrote to do this.

page.css
(http://www.mbutler.org/schema/page.css)

/* CSS Document */
PAGE
{
background-color: #ffffff;
width: 100%;
font:Arial, Helvetica, sans-serif;
font-size:12px
}
LINE
{display:block
}
DATA
{
margin-bottom: 30pt;
margin-left: 0;
}

Now, when you view the XML documents using the latest web browsers, they should appear in their original form.

Poem #1

Poem #2

However they contain much more information, as detailed by Dan Graham almost 40 years ago.

visit rhizome.org project page
return to portfolio