read


read
or learn more

A Language for Representing Artistic Connections

Sep 15, 2008

For the past 10 years or so, I have attempted to keep track of the way in which my tastes in art (i.e. literature, music, film, etc..) are influenced. I initially started off doing this in the Dot language, but quickly found this to be untenable. I have considered migrating my current stack of thousands of connections to Prolog, but perhaps a simpler, more specific language would be a better option. This language would of course have to provide a way to define core entities symbolically.

a(:Philosopher).isa(:Person)
a(:Musician).isa(:Person)
a(:Friend).isa(:Person)
a(:Musician).isa(:Person)
a(:Magazine).isa(:Media)
a(:Book).isa(:Media)

Next, it would have to provide a way to track how links between the act of observing art and discovering new links occurs:

reading("Apparat Singles Collection v1").found("The Encyclopedia of Science Fiction")
reading("Apparat Singles Collection v1").found("Doc Savage")
reading("Apparat Singles Collection v1").found("J.G. Ballard").created("Crash")
reading("Apparat Singles Collection v1").found("Alfred Bester").created("The Stars My Destination")
reading("Apparat Singles Collection v1").found("Tom Waits").created("The Mule Variations")

It would also be nice to define the category of an element in-place (this setting would be idempotent?):

reading("Nodame Cantabile").at('2008.09.12').found("Edward Elgar").isa(:Musician)

Of course, the verbs used to start a link should not be a requirement. Instead, there should be a way to refer to elements directly and then create links immediately.

$("Rob Friesel").isa(:Friend).recommends("House of Leaves")
$("http://www.houseofleaves.com").refers_to("House of Leaves")
$("Rob Friesel").recommends("Perdido Street Station")
$("Warren Ellis").created("Apparat Singles Collection v1")
$("Weird Tales").isa(:Magazine).recommends("The Brief History of the Dead")
$("Matt Bachtell").isa(:Friend).recommends("H.P. Lovecraft").isa(:Author)

It would be nice to be able to attach metadata to entities directly:

$("RESTful Web Services").attach {"isbn" => "0596529260"}

Sometimes, one piece of art is influenced by another:

$("Sword of Shannara").steals("Lord of the Rings")
$("Neil Stephenson").influences("Rob Friesel")
$("Symphony No. 1").by("Johannes Brahms").resembles("Symphony No. 9").by("Ludwig van Beethoven")

Finally, it is conceivable to learn about art and artists through osmosis, so this should be allowed also:

aether.found("Michael Moorcock").isa(:Author)

Looks like a Ruby-based DSL right? It likely would be just that, but I do not expect to go through the pain of creating an underlying inference engine to make sense out of these connections. Instead, the output of this language should be another language that can be used to perform inferences on the connections. Possible output languages are:

-m

4 Comments, Comment or Ping

  1. What about RDF?

  2. RDF as an output type or RDF as the language itself? The former almost certainly, especially in lieu of something like SPARQL.

    -m

  3. Reminds me of CycL (cough … skynet … cough) (http://www.cyc.com/cycdoc/ref/cycl-syntax.html)

    Not that I know all that much about it.

  4. It’s interesting that you mention CycL as a friend from college went to work on that project a few years ago. I will try to make head or tails out of the link.

    Thanks for visiting the site. -m

Reply to “A Language for Representing Artistic Connections”