2. Business
• Quiz 1
– To be posted this evening
– Due Thursday evening
– Covers content before Databases
– End-of-week reflections still due
• Blogging
– Please remember to be timely
• Safari Resources
– If you can‟t access, try going through the
Library page
3. Review
• Building as knowing
– Ramsay‟s point in “On Building”
• DH as cultural reverse engineering
– Finding the rules in the patterns
– Texts and images are the patterns in
question
• Reverse engineering is like building
– Same process in reverse (deconstruction)
– Also requires building other things – like
databases to store stuff
4. For example, in Studio on Thursday we began to reverse
engineer Plato’s Republic. The next step in our exercise
was to parse the text into “words” and organize them in a
list using an array
6. Not really – we were find substrings,
letter patterns that could also exist
within words (e.g. “cavern”)
Also, these patterns did not match
synonyms or pronouns (e.g. “this”) that
stand for the same thing as the word in
question
This is the difference between SYNTAX
and SEMANTICS
7. Syntax = sequences of signs
Semantics = meanings of signs
Semantics is much harder for computers
to grasp than syntax
In fact, some think that semantics is
beyond the capacity of any computer …
8. Getting back to PHP
We can use arrays to model the text. So,
within a FOREACH loop iterating through
the lines of a text and parsing each line for
“words,” we could do the following:
$words[$word]++;
$words[] = $word;
$lines[$lineNumber][] = $word;
Each method suggests a different model
9. More about PHP Arrays
• Arrays can be added to like so:
$myArray[] = $newItem;
• Arrays can also use strings instead of
number as indices, e.g.
$myArray[3] = „foo‟;
$myArray[„person‟] = „Bob‟;
• Array items may also point to arrays,
creating multidimensional arrays
$myArray[„person‟] = array();
$myArray[„person‟][„Bob‟] = $something;
10. Arrays with string indices are called
“associative arrays” in PHP
Arrays of arrays can be used to create
data structures like trees and grids
11. Read Chapter 5 of PHP: The
Good Parts to learn more
about arrays (see link in
Resources on the course blog)
Also, the PHP manual is always
a good place to look
http://php.net/manual/en/language.types.array.php
12. Arrays as Data Structures
• PHP arrays can be used to create data
structures to model things, like texts, e.g.
$words[$word]++;
$words[] = $word;
$lines[$lineNumber][] = $word;
• These three create the following
1. A simple list of word types (and their
counts)
2. A list of each word in order (position and
word)
3. A grid of line numbers and words
13. Here is an example of how we would create
the third kind of data structure. This would
store a grid of words.
14. These numbers are the first dimension of the array (Y)
These horizontal numbers are the second dimension of the array (Y)
And it would store the text in grid something
like this one …
15. In this model, a text is a grid of words,
each with an X and Y coordinate
Is this the only way to represent a text?
Is it the most accurate?
17. Document Elements and Structures
Play – Heading
– Act + • Return Address
• Scene + • Date
– Line + • Recipient Info
– Name
Book – Title
– Chapter + – Address
• Verse + – Content
• Salutation
• Paragraph +
• Closing
Letter
20. Tables are more rigid
Trees allow for indefinite depth
But tables are easier to manipulate
In any case, tables and trees are two
major kinds of data structure that you
will encounter …
22. Tree of Logic (and a
primitive computer)
". . . the tree of nature and logic by the
thirteenth-century poet, philosopher, and
missionary Ramon Lull. The main trunk supports
a version of the tree of Porphyry, which
illustrates Aristotle's categories. The ten leaves
on the right represent ten types of questions,
and the ten leaves on the left are keyed to a
system of rotating disks for generating answers.
Such diagrams and disks comprise Lull's Ars
Magna (Great Art), which was the first attempt
to develop mechanical aids to reasoning. It
served as an inspiration to the pioneer in
symbolic logic, Gottfried Wilhelm Leibniz.”
John Sowa, explaining the cover art for
Knowledge Representation
27. A KR is a model that comprises
1. A set of categories (aka Ontology)
Names and relationships between names
2. A set of inference rules (aka Logic)
A method of traversing names and relations
3. A medium for computation
A medium for producing inferences
4. A language for expressing these things
Such as a programming or markup language
29. Ontologies consist of
categories and their
relationships
These are often mapped
onto physical things – the
human body, or trees – as
part of our cognitive model
30. The tree as body as society among the Umeda of New Guinea
31. Logic is a name for the systematic
unpacking ontologies in discourse …
32. Here is a sample
ontology, one
very similar to
Aristotle’s
33. And this is a syllogism, the basic unit of
reasoning in classical logic
How is it related to the tree?
34. The sentences in the
syllogism stand for
the traversal of the
tree that represents
an implicit ontology
35. Reasoning always implies an ontology
Ontologies are often unexpressed
Ontologies often conflict with each other
(Digital) Humanists excavate or reverse
engineer these ontologies
36. Now, a KR for a computer has to be
an operationalized KR
How would we express a syllogism
in PHP?
38. But, given such an array, how can we find out if
Socrates is mortal?
How do we find if the following is set:
0 1 2 3 4
39. We’d have to some some complicated nested looping to
find the answer …
40. So, PHP gives us tools to create an
ontology, but not a way to reason
efficiently with them
To create more effective KRs, we need
the services of a database
41. A database is a “a system that allows for
the efficient storage and retrieval of
information”
But beyond this, it also allows us to
“represent knowledge”
Given Unsworth‟s definition, how must it
do this?
42. Databases provide a language to define
ontologies (schema) and to “unpack”
these ontologies – via a query language
that lets us efficiently search and
retrieve data organized schema
43. In this course, we are going to use a
relational database to store and access
information
Relational databases use a language
known as SQL
(pronounced S-Q-L, although some say
“sequel”)
44. SQL
• SQL stands for “Structured Query
Language”
– NOT invented by Microsoft
• Invented in the 1970s and
commercialized in the 1980s
– Probably responsible for new business
models like JIT inventories
• Built on Codd‟s relational model (1970)
– Implements set theory and formal logic
– Around the time of SGML
45. SQL
• A language used by relational databases
– Oracle, SQL Server, Access, etc.
46. MySQL
• A very fast, simplified, and easy to use
relational database
• A client/server app
– Runs on the internet
– Not a desktop app like Access
• Created by Monty Widenius in the mid
1990s
– Open Source
– A Finn living in Sweden
– Same time as PHP
• Powered the Web 2.0 revolution
47. phpMyAdmin
• A PHP interface to MySQL
• Relatively easy to use
– No need to know SQL
• Great to manage databases that your PHP
programs will use
• Today you will get started using UVA‟s
free MySQL server