<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="https://blog.muninn-project.org"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>The Muninn Project - Racket</title>
 <link>https://blog.muninn-project.org/taxonomy/term/81</link>
 <description></description>
 <language>en</language>
<item>
 <title>Print your own Battlefield</title>
 <link>https://blog.muninn-project.org/node/89</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt;The Muninn Project aims to programmatically recreate scenes of historical events using &lt;a href=&quot;http://lod-cloud.net/&quot;&gt;Linked Open Data&lt;/a&gt; - and with the ever-increasing availability of high-quality 3D printers, we are motivated to 3D-print these scenes. In this particular post, we will talk about how to 3D-print a battlefield: the trenches of Vimy Ridge. We believe that 3D-printed models of battlefields, such as the trenches of Vimy Ridge, could be quite useful to archeologists &amp;amp; other individuals studying past historical events, namely the &lt;a href=&quot;http://en.wikipedia.org/wiki/Battle_of_Vimy_Ridge&quot;&gt;Battle of Vimy Ridge&lt;/a&gt;. We will discuss how to retrieve 90m-resolution elevation data inside a bounding box from the &lt;a href=&quot;http://www2.jpl.nasa.gov/srtm/&quot;&gt;Shuttle Radar Topography Mission (SRTM)&lt;/a&gt;, how to scale &amp;amp; project it with the &lt;a href=&quot;http://www.gdal.org/&quot;&gt;Geospatial Data Abstraction Library (GDAL)&lt;/a&gt; and also how to convert it to an &lt;a href=&quot;http://en.wikipedia.org/wiki/STL_%28file_format%29&quot;&gt;STL file&lt;/a&gt; that can be 3D-printed; we will also discuss how to retrieve lists of trench coordinates from the Muninn Project&#039;s &lt;a href=&quot;http://rdf.muninn-project.org/sparql&quot;&gt;SPARQL server&lt;/a&gt;, and how to extrude trenches on our model of Vimy Ridge before 3D-printing it. Lastly, we will discuss issues regarding the size &amp;amp; resolution of our model of Vimy Ridge and suggest how we might improve the quality of our model in the future. Thanks to Lawrence Willett for letting us use his 3D printer.&lt;/p&gt;
&lt;p&gt;In order to 3D-print a battlefield, we first need to determine its bounding box. Currently, the Muninn Project&#039;s SPARQL server provides lists of trench coordinates for Vimy Ridge contained in (2.70251452076269, 50.0620220454661, 2.75071474125368, 50.0722188449797). We chose to 3D-print a model of the trenches of Vimy Ridge that lie inside of this bounding box.&lt;/p&gt;
&lt;p&gt;After determining the bounding box for our battlefield, we need to retrieve the elevation data inside of it. We&#039;ve built &lt;a href=&quot;https://github.com/markfarrell/elevation&quot;&gt;software&lt;/a&gt; - written in a modern descendant of Scheme known as &lt;a href=&quot;http://racket-lang.org/&quot;&gt;Racket&lt;/a&gt; - that allows us a retrieve raster images of elevation data inside of bounding boxes. Our software also allows us to &lt;a href=&quot;http://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system&quot;&gt;UTM-project&lt;/a&gt; and scale our raster images to 1m resolution, necessary in order for us to extrude trenches on a 3D-printable model of our battlefield; we use GDAL behind the scenes. Here is a projected &amp;amp; scaled raster image of elevation data for our model of the trenches of Vimy Ridge:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://i.imgur.com/8SyJsa3.png&quot; style=&quot;width: 500px; height: 162px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We then &lt;a href=&quot;https://github.com/markfarrell/trenches&quot;&gt;create a raster image&lt;/a&gt; of trench data for Vimy Ridge with the same origin, dimensions, resolution and projection as our raster image of elevation data. First, we retrieve lists of trench coordinates inside of our bounding box using the Muninn Project&#039;s SPARQL server; as mentioned, currently all of the trench data that we have for Vimy Ridge is contained within the bounding box we chose to use for our model. Before getting lists of trench coordinates, we first find all known World War 1 objects inside of this bounding box:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width: 500px;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre&gt;
SELECT DISTINCT ?thing ?state {
  ?thing &amp;lt;http://geovocab.org/geometry#geometry&amp;gt; ?geoma .
  ?thing &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&amp;gt;
         &amp;lt;http://rdf.muninn-project.org/ontologies/military#MilitaryTrench&amp;gt; .
  ?geoma &amp;lt;http://linkedgeodata.org/ontology/posSeq&amp;gt; ?SEQ .
  ?SEQ &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&amp;gt;
       &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq&amp;gt; .
  ?SEQ ?List ?node .
  ?node &amp;lt;http://www.w3.org/2003/01/geo/wgs84_pos#lat&amp;gt; ?LAT .
  ?node &amp;lt;http://www.w3.org/2003/01/geo/wgs84_pos#long&amp;gt; ?LONG .
  OPTIONAL { ?thing &amp;lt;http://rdf.muninn-project.org/ontologies/graves#hasState&amp;gt; ?state . }
  FILTER (?LAT  &amp;lt; 50.0722188449797 &amp;amp;&amp;amp; ?LAT  &amp;gt; 50.0620220454661)
  FILTER (?LONG &amp;lt; 2.75071474125368 &amp;amp;&amp;amp; ?LONG &amp;gt; 2.70251452076269)
}&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Then, we find lists of trench coordinates for each trench object, after filtering out known WW1 objects that are not trenches. For each trench object&lt;em&gt;,&lt;/em&gt; we execute the following SPARQL query, giving us a list of trench coordinates:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width: 500px;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre&gt;
SELECT ?List ?LAT ?LONG {
  &amp;lt;&lt;em&gt;trench&lt;/em&gt;&amp;gt; &amp;lt;http://geovocab.org/geometry#geometry&amp;gt; ?geoma .
  &amp;lt;&lt;em&gt;trench&lt;/em&gt;&amp;gt; &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&amp;gt;
           &amp;lt;http://rdf.muninn-project.org/ontologies/military#MilitaryTrench&amp;gt; .
  ?geoma &amp;lt;http://linkedgeodata.org/ontology/posSeq&amp;gt; ?SEQ .
  ?SEQ &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&amp;gt;
       &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq&amp;gt; .
  ?SEQ ?List ?node .
  ?node &amp;lt;http://www.w3.org/2003/01/geo/wgs84_pos#lat&amp;gt; ?LAT .
  ?node &amp;lt;http://www.w3.org/2003/01/geo/wgs84_pos#long&amp;gt; ?LONG .
  FILTER (?LAT  &amp;lt; 50.0722188449797 &amp;amp;&amp;amp; ?LAT  &amp;gt; 50.0620220454661)
  FILTER (?LONG &amp;lt; 2.75071474125368 &amp;amp;&amp;amp; ?LONG &amp;gt; 2.70251452076269)
} ORDER BY ASC(?List)&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;where &lt;em&gt;trench&lt;/em&gt; is the &lt;a href=&quot;http://en.wikipedia.org/wiki/Uniform_resource_identifier&quot;&gt;Uniform Resource Identifer (URI)&lt;/a&gt; for the trench object.&lt;/p&gt;
&lt;p&gt;We then &lt;a href=&quot;https://github.com/markfarrell/utm&quot;&gt;UTM-project&lt;/a&gt; each list of trench coordinates, and afterwards &lt;a href=&quot;https://github.com/markfarrell/sort-by-distance&quot;&gt;sort&lt;/a&gt; them by finding the shortest path between the two coordinates closest and farthest from the origin in each list. Finally, we are to produce a raster image of our trench data for Vimy Ridge: for each projected &amp;amp; sorted list of trench coordinates we create a &quot;drawing pen&quot;, set its line-width to the desired the width of our trenches, set the grayscale value of its colour to the desired depth of our trenches and then draw lines between each sliding pair of coordinates in each list of coordinates, saving our drawing as a raster image:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://i.imgur.com/zL6pO8U.png&quot; style=&quot;width: 496px; height: 161px; border-width: 2px; border-style: solid;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once we have projected &amp;amp; scaled raster images for both our elevation data and trench data, we then create a trench-extruded terrain mesh in &lt;a href=&quot;http://www.blender.org/&quot;&gt;Blender&lt;/a&gt;, which we can export to an STL file for 3D-printing. Secondly, we create a plane mesh with the same dimensions as our raster images, subdividing it so that it has the same resolution as our raster images as well. Thirdly, we add a &lt;em&gt;displace modifier &lt;/em&gt;to set the height values of each point on our plane to each corresponding grayscale colour value of pixels on our elevation raster image. Lastly, we add another &lt;em&gt;displace modifier&lt;/em&gt;, extruding trenches with the raster of image of trench data that we created:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://i.imgur.com/T9CGAdg.png?2&quot; style=&quot;width: 500px; height: 167px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, we export the trench-extruded terrain mesh that we created as an STL file, which we send to the 3D printer:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://i.imgur.com/5IEthbD.png?2&quot; style=&quot;height: 172px; width: 500px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We were able to produce a 3D-printed model of the trenches of Vimy Ridge with comparable quality &amp;amp; resolution to that of our digital 3D model. In the future, we&#039;d like to increase the size of our 3D-printed model to include more of Vimy Ridge, namely the ridge itself. This may prove somewhat difficult because the polygon count of our trenched-extruded terrain mesh in Blender, and hence our STL file, might grow too high to view, export and print; in other words, we might hit our current hardware limitations when we try to 3D-print a larger battlefield. Though, we might be able to overcome these potential limitations by either (a) increasing our computing power (b) using Blender &lt;em&gt;as a library &lt;/em&gt;to avoid the need to render our trench-extruded terrain mesh in Blender before exporting it or by (c) printing separate parts of our model and gluing them together afterwards.&lt;/p&gt;
&lt;p&gt;We encourage you to try printing your own battlefield using the methods &amp;amp; software provide in this blog post - let us know how you made out! Stay tuned for more information on 3D-printing your own historical battlefields.&lt;/p&gt;
&lt;p&gt;P.S. This is what it looks like when 3D-printing fails:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width: 500px;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
				&lt;img alt=&quot;&quot; src=&quot;http://i.imgur.com/wxELaNv.png?1&quot; style=&quot;width: 216px; height: 80px;&quot; /&gt;&lt;/td&gt;
&lt;td&gt;
				&lt;img alt=&quot;&quot; src=&quot;http://i.imgur.com/gMvNZHe.png?1&quot; style=&quot;width: 270px; height: 80px;&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
	 &lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;form-item form-type-item&quot;&gt;
  &lt;label&gt;Language &lt;/label&gt;
 English
&lt;/div&gt;
&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/93&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;3D Printing&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/90&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Vimy Ridge&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/70&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Trenches&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/89&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Elevation&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/91&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;SRTM&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/13&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;SPARQL&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/92&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;GDAL&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/81&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Racket&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/96&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Scheme&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/97&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;LISP&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/87&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Blender&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
 <pubDate>Fri, 27 Mar 2015 15:11:43 +0000</pubDate>
 <dc:creator>m4farrel</dc:creator>
 <guid isPermaLink="false">89 at https://blog.muninn-project.org</guid>
 <comments>https://blog.muninn-project.org/node/89#comments</comments>
</item>
<item>
 <title>Retrieving Historical Photos of Film Stars using DBpedia</title>
 <link>https://blog.muninn-project.org/node/81</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;style type=&quot;text/css&quot;&gt;
&lt;!--/*--&gt;&lt;![CDATA[/* &gt;&lt;!--*/

/* This file is used by default by all Scribble documents.
   See also &quot;manual.css&quot;, which is added by default by the
   `scribble/manual` language. */

/* CSS seems backward: List all the classes for which we want a
   particular font, so that the font can be changed in one place.  (It
   would be nicer to reference a font definition from all the places
   that we want it.)

   As you read the rest of the file, remember to double-check here to
   see if any font is set. */

/* Monospace: */
.maincolumn, .refpara, .refelem, .tocset, .stt, .hspace, .refparaleft, .refelemleft {
  font-family: monospace;
}

/* Serif: */
.main, .refcontent, .tocview, .tocsub, .sroman, i {
  font-family: serif;
}

/* Sans-serif: */
.version, .versionNoNav, .ssansserif {
  font-family: sans-serif;
}
.ssansserif {
  font-size: 80%;
  font-weight: bold;
}

/* ---------------------------------------- */

p, .SIntrapara {
  display: block;
  margin: 1em 0;
}

h2 { /* per-page main title */
  margin-top: 0;
}

h3, h4, h5, h6, h7, h8 {
  margin-top: 1.75em;
  margin-bottom: 0.5em;
}

.SSubSubSubSection {
  font-weight: bold;
  font-size: 0.83em; /* should match h5; from HTML 4 reference */
}

/* Needed for browsers like Opera, and eventually for HTML 4 conformance.
   This means that multiple paragraphs in a table element do not have a space
   between them. */
table p {
  margin-top: 0;
  margin-bottom: 0;
}

/* ---------------------------------------- */
/* Main */

body {
  color: black;
  background-color: #ffffff;
}

table td {
  padding-left: 0;
  padding-right: 0;
}

.maincolumn {
  width: 43em;
  margin-right: -40em;
  margin-left: 15em;
}

.main {
  text-align: left;
}

/* ---------------------------------------- */
/* Navigation */

.navsettop, .navsetbottom {
  background-color: #f0f0e0;
  padding: 0.25em 0 0.25em 0;
}

.navsettop {
  margin-bottom: 1.5em;
  border-bottom: 2px solid #e0e0c0;
}

.navsetbottom {
  margin-top: 2em;
  border-top: 2px solid #e0e0c0;
}

.navleft {
  margin-left: 1ex;
  position: relative;
  float: left;
  white-space: nowrap;
}
.navright {
  margin-right: 1ex;
  position: relative;
  float: right;
  white-space: nowrap;
}
.nonavigation {
  color: #e0e0e0;
}

.searchform {
  display: inline;
  margin: 0;
  padding: 0;
}

.nosearchform {
  display: none;
}

.searchbox {
  width: 16em;
  margin: 0px;
  padding: 0px;
  background-color: #eee;
  border: 1px solid #ddd;
  text-align: center;
  vertical-align: middle;
}

#contextindicator {
  position: fixed;
  background-color: #c6f;
  color: #000;
  font-family: monospace;
  font-weight: bold;
  padding: 2px 10px;
  display: none;
  right: 0;
  bottom: 0;
}

/* ---------------------------------------- */
/* Version */

.versionbox {
  position: relative;
  float: right;
  left: 2em;
  height: 0em;
  width: 13em;
  margin: 0em -13em 0em 0em;
}
.version {
  font-size: small;
}
.versionNoNav {
  font-size: xx-small; /* avoid overlap with author */
}

.version:before, .versionNoNav:before {
  content: &quot;Version &quot;;
}

/* ---------------------------------------- */
/* Margin notes */

.refpara, .refelem {
  position: relative;
  float: right;
  left: 2em;
  height: 0em;
  width: 13em;
  margin: 0em -13em 0em 0em;
}

.refpara, .refparaleft {
  top: -1em;
}

.refcolumn {
  background-color: #F5F5DC;
  display: block;
  position: relative;
  width: 13em;
  font-size: 85%;
  border: 0.5em solid #F5F5DC;
  margin: 0 0 0 0;
}

.refcontent {
  margin: 0 0 0 0;
}

.refcontent p {
  margin-top: 0;
  margin-bottom: 0;
}

.refparaleft, .refelemleft {
  position: relative;
  float: left;
  right: 2em;
  height: 0em;
  width: 13em;
  margin: 0em 0em 0em -13em;
}

.refcolumnleft {
  background-color: #F5F5DC;
  display: block;
  position: relative;
  width: 13em;
  font-size: 85%;
  border: 0.5em solid #F5F5DC;
  margin: 0 0 0 0;
}


/* ---------------------------------------- */
/* Table of contents, inline */

.toclink {
  text-decoration: none;
  color: blue;
  font-size: 85%;
}

.toptoclink {
  text-decoration: none;
  color: blue;
  font-weight: bold;
}

/* ---------------------------------------- */
/* Table of contents, left margin */

.tocset {
  position: relative;
  float: left;
  width: 12.5em;
  margin-right: 2em;
}
.tocset td {
  vertical-align: text-top;
}

.tocview {
  text-align: left;
  background-color: #f0f0e0;
}

.tocsub {
  text-align: left;
  margin-top: 0.5em;
  background-color: #f0f0e0;
}

.tocviewlist, .tocsublist {
  margin-left: 0.2em;
  margin-right: 0.2em;
  padding-top: 0.2em;
  padding-bottom: 0.2em;
}
.tocviewlist table {
  font-size: 82%;
}

.tocviewlisttopspace {
  margin-bottom: 1em;
}

.tocviewsublist, .tocviewsublistonly, .tocviewsublisttop, .tocviewsublistbottom {
  margin-left: 0.4em;
  border-left: 1px solid #bbf;
  padding-left: 0.8em;
}
.tocviewsublist {
  margin-bottom: 1em;
}
.tocviewsublist table,
.tocviewsublistonly table,
.tocviewsublisttop table,
.tocviewsublistbottom table {
  font-size: 75%;
}

.tocviewtitle * {
  font-weight: bold;
}

.tocviewlink {
  text-decoration: none;
  color: blue;
}

.tocviewselflink {
  text-decoration: underline;
  color: blue;
}

.tocviewtoggle {
  text-decoration: none;
  color: blue;
  font-size: 75%; /* looks better, and avoids bounce when toggling sub-sections due to font alignments */
}

.tocsublist td {
  padding-left: 1em;
  text-indent: -1em;
}

.tocsublinknumber {
  font-size: 82%;
}

.tocsublink {
  font-size: 82%;
  text-decoration: none;
}

.tocsubseclink {
  font-size: 82%;
  text-decoration: none;
}

.tocsubnonseclink {
  font-size: 82%;
  text-decoration: none;
  padding-left: 0.5em;
}

.tocsubtitle {
  font-size: 82%;
  font-style: italic;
  margin: 0.2em;
}

/* ---------------------------------------- */
/* Some inline styles */

.indexlink {
  text-decoration: none;
}

.nobreak {
  white-space: nowrap;
}

pre { margin-left: 2em; }
blockquote { margin-left: 2em; }

ol          { list-style-type: decimal; }
ol ol       { list-style-type: lower-alpha; }
ol ol ol    { list-style-type: lower-roman; }
ol ol ol ol { list-style-type: upper-alpha; }

.SCodeFlow {
  display: block;
  margin-left: 1em;
  margin-bottom: 0em;
  margin-right: 1em;
  margin-top: 0em;
  white-space: nowrap;  
}

.SVInsetFlow {
  display: block;
  margin-left: 0em;
  margin-bottom: 0em;
  margin-right: 0em;
  margin-top: 0em;
}

.SubFlow {
  display: block;
  margin: 0em;
}

.boxed {
  width: 100%;
  background-color: #E8E8FF;
}

.hspace {
}

.slant {
  font-style: oblique;
}

.badlink {
  text-decoration: underline;
  color: red;
}

.plainlink {
  text-decoration: none;
  color: blue;
}

.techoutside       { text-decoration: underline; color: #b0b0b0; }
.techoutside:hover { text-decoration: underline; color: blue; }

/* .techinside:hover doesn&#039;t work with FF, .techinside:hover&gt;
   .techinside doesn&#039;t work with IE, so use both (and IE doesn&#039;t
   work with inherit in the second one, so use blue directly) */
.techinside                    { color: black; }
.techinside:hover              { color: blue; }
.techoutside:hover&gt;.techinside { color: inherit; }

.SCentered {
  text-align: center;
}

.imageleft {
  float: left;
  margin-right: 0.3em;
}

.Smaller {
  font-size: 82%;
}

.Larger {
  font-size: 122%;
}

/* A hack, inserted to break some Scheme ids: */
.mywbr {
  display: inline-block;
  height: 0;
  width: 0;
  font-size: 1px;
}

.compact li p {
  margin: 0em;
  padding: 0em;
}

.noborder img {
  border: 0;
}

.SAuthorListBox {
  position: relative;
  float: right;
  left: 2em;
  top: -2.5em;
  height: 0em;
  width: 13em;
  margin: 0em -13em 0em 0em;
}
.SAuthorList {
  font-size: 82%;
}
.SAuthorList:before {
  content: &quot;by &quot;;
}
.author {
  display: inline;
  white-space: nowrap;
}

/* print styles : hide the navigation elements */
@media print {
  .tocset,
  .navsettop,
  .navsetbottom { display: none; }
  .maincolumn {
    width: auto;
    margin-right: 13em;
    margin-left: 0;
  }
}
/*--&gt;&lt;!]]&gt;*/
&lt;/style&gt;&lt;style type=&quot;text/css&quot;&gt;
&lt;!--/*--&gt;&lt;![CDATA[/* &gt;&lt;!--*/

/* See the beginning of &quot;scribble.css&quot;. */

/* Monospace: */
.RktIn, .RktRdr, .RktPn, .RktMeta,
.RktMod, .RktKw, .RktVar, .RktSym,
.RktRes, .RktOut, .RktCmt, .RktVal,
.RktBlk {
  font-family: monospace;
  white-space: inherit;
}

/* Serif: */
.inheritedlbl {
  font-family: serif;
}

/* Sans-serif: */
.RBackgroundLabelInner {
  font-family: sans-serif;
}

/* ---------------------------------------- */
/* Inherited methods, left margin */

.inherited {
  width: 100%;
  margin-top: 0.5em;
  text-align: left;
  background-color: #ECF5F5;
}

.inherited td {
  font-size: 82%;
  padding-left: 1em;
  text-indent: -0.8em;
  padding-right: 0.2em;
}

.inheritedlbl {
  font-style: italic;
}

/* ---------------------------------------- */
/* Racket text styles */

.RktIn {
  color: #cc6633;
  background-color: #eeeeee;
}

.RktInBG {
  background-color: #eeeeee;
}

.RktRdr {
}

.RktPn {
  color: #843c24;
}

.RktMeta {
  color: black;
}

.RktMod {
  color: black;
}

.RktOpt {
  color: black;
}

.RktKw {
  color: black;
}

.RktErr {
  color: red;
  font-style: italic;
}

.RktVar {
  color: #262680;
  font-style: italic;
}

.RktSym {
  color: #262680;
}

.RktSymDef { /* used with RktSym at def site */
}

.RktValLink {
  text-decoration: none;
  color: blue;
}

.RktValDef { /* used with RktValLink at def site */
}

.RktModLink {
  text-decoration: none;
  color: blue;
}

.RktStxLink {
  text-decoration: none;
  color: black;
}

.RktStxDef { /* used with RktStxLink at def site */
}

.RktRes {
  color: #0000af;
}

.RktOut {
  color: #960096;
}

.RktCmt {
  color: #c2741f;
}

.RktVal {
  color: #228b22;
}

/* ---------------------------------------- */
/* Some inline styles */

.together {
  width: 100%;
}

.prototype, .argcontract, .RBoxed {
  white-space: nowrap;
}

.prototype td {
  vertical-align: text-top;
}

.RktBlk {
  white-space: inherit;
  text-align: left;
}

.RktBlk tr {
  white-space: inherit;
}

.RktBlk td {
  vertical-align: baseline;
  white-space: inherit;
}

.argcontract td {
  vertical-align: text-top;
}

.highlighted {
  background-color: #ddddff;
}

.defmodule {
  width: 100%;
  background-color: #F5F5DC;
}

.specgrammar {
  float: right;
}

.RBibliography td {
  vertical-align: text-top;
}

.leftindent {
 margin-left: 1em;
 margin-right: 0em;
}

.insetpara {
 margin-left: 1em;
 margin-right: 1em;
}

.Rfilebox {
}

.Rfiletitle {
  text-align: right;
  margin: 0em 0em 0em 0em;
}

.Rfilename {
  border-top: 1px solid #6C8585;
  border-right: 1px solid #6C8585;
  padding-left: 0.5em;
  padding-right: 0.5em;
  background-color: #ECF5F5;
}

.Rfilecontent {
  margin: 0em 0em 0em 0em;
}

.RpackageSpec {
  padding-right: 0.5em;
}

/* ---------------------------------------- */
/* For background labels */

.RBackgroundLabel {
   float: right;
   width: 0px;
   height: 0px;
}

.RBackgroundLabelInner {
   position: relative;
   width: 25em;
   left: -25.5em;
   top: 0px;
   text-align: right;
   color: white;
   z-index: 0;
   font-weight: bold;
}

.RForeground {
   position: relative;
   left: 0px;
   top: 0px;
   z-index: 1;
}

/* ---------------------------------------- */
/* History */

.SHistory {
  font-size: 82%;
}
/*--&gt;&lt;!]]&gt;*/
&lt;/style&gt;&lt;p&gt;This is a follow-up to the previous blog post on retrieving historical art from the Rijksmuseum. Like historical art, film star photos inform us about politics and human culture at particular times throughout history - but there are so many film star photos that it becomes difficult to devote sufficient attention to each individual photo. We can use &lt;a href=&quot;http://dbpedia.org/About&quot;&gt;DBpedia&lt;/a&gt; to retrieve historical photos of film stars and display them in our statistically generated scenes of historical events. &lt;em&gt;We&#039;ll display both film star photos and historical art that best fit the contexts of our statistically generated scenes - and use the context of the scenes that they are placed in to interpret them for their historical significance. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;img alt=&quot;&quot; src=&quot;http://i.imgur.com/pJjZvQS.png&quot; style=&quot;width: 382px; height: 263px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As an example, let’s look at film stars who were active around the time that Anne Frank was alive. We&#039;ll look at film stars who became active 1900-1945, even though Anne Frank was born in 1929. Anne Frank &lt;a href=&quot;http://www.annefrank.org/en/Museum/Collecties/Movie-star-pictures/&quot;&gt;pasted photos of film stars on her wall&lt;/a&gt; who were active before she was born, such as &lt;a href=&quot;http://dbpedia.org/page/Greta_Garbo&quot;&gt;Greta Garbo&lt;/a&gt; who became active in 1920. Here’s a &lt;a href=&quot;http://www.w3.org/TR/2013/REC-sparql11-query-20130321/SPARQL&quot;&gt;SPARQL&lt;/a&gt; query to retrieve film stars who were active during that time period:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width: 500px;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-family:courier new,courier,monospace;&quot;&gt;PREFIX wordnet: &amp;lt;&lt;a href=&quot;http://www.w3.org/2006/03/wn/wn20/instances/&amp;gt;&quot;&gt;http://www.w3.org/2006/03/wn/wn20/instances/&amp;gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family:courier new,courier,monospace;&quot;&gt;SELECT DISTINCT ?actor ?thumb ?start {&lt;br /&gt;
					  {&lt;br /&gt;
					    ?actor dbpprop:wordnet_type wordnet:synset-actor-noun-1 .&lt;br /&gt;
					  } UNION {&lt;br /&gt;
					    ?actor dbpedia-owl:occupation dbpedia:Actor .&lt;br /&gt;
					  }&lt;br /&gt;
					  ?actor dbpedia-owl:thumbnail ?thumb .&lt;br /&gt;
					  ?actor dbpedia-owl:activeYearsStartYear ?start .&lt;br /&gt;
					  FILTER (?start &amp;gt; &quot;1900-01-01&quot;^^xsd:date)&lt;br /&gt;
					  FILTER (?start &amp;lt; &quot;1945-01-01&quot;^^xsd:date)&lt;br /&gt;
					  FILTER EXISTS {&lt;br /&gt;
					    {&lt;br /&gt;
					      ?film dbpedia-owl:starring ?actor .&lt;br /&gt;
					    } UNION {&lt;br /&gt;
					      ?film dbpprop:starring ?actor .&lt;br /&gt;
					    }&lt;br /&gt;
					  }&lt;br /&gt;
					}&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;We can execute that SPARQL query and retrieve the results by sending a &lt;span style=&quot;font-style: italic&quot;&gt;GET&lt;/span&gt; request to DBpedia’s SPARQL endpoint:&lt;/p&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-family:courier new,courier,monospace;&quot;&gt;&lt;span class=&quot;stt&quot;&gt;&lt;a href=&quot;http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&amp;amp;format=json&amp;amp;timeout=30000&amp;amp;debug=on&amp;amp;query=&quot;&gt;http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&amp;amp;for...&lt;/a&gt;???&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style=&quot;font-style: italic&quot;&gt;Note: we’d set the query parameter to be our SPARQL query.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Here&#039;s a sample of the results that are returned after executing the SPARQL query:&lt;/p&gt;
&lt;table border=&quot;1&quot; class=&quot;sparql&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;
				actor&lt;/th&gt;
&lt;th&gt;
				thumb&lt;/th&gt;
&lt;th&gt;
				start&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
				&lt;a href=&quot;http://dbpedia.org/resource/Amparo_Rivelles&quot;&gt;http://dbpedia.org/resource/Amparo_Rivelles&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
				&lt;a href=&quot;http://commons.wikimedia.org/wiki/Special:FilePath/Amparo_Rivelles.jpg?width=300&quot;&gt;http://commons.wikimedia.org/wiki/Special:FilePath/Amparo_Rivelles.jpg?width=300&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
				&quot;1942+02:00&quot;^^&amp;lt;&lt;a href=&quot;http://www.w3.org/2001/XMLSchema#gYear&amp;gt;&quot;&gt;http://www.w3.org/2001/XMLSchema#gYear&amp;gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
				&lt;a href=&quot;http://dbpedia.org/resource/Art_Acord&quot;&gt;http://dbpedia.org/resource/Art_Acord&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
				&lt;a href=&quot;http://commons.wikimedia.org/wiki/Special:FilePath/Art_Acord_Kephren_1917.jpg?width=300&quot;&gt;http://commons.wikimedia.org/wiki/Special:FilePath/Art_Acord_Kephren_1917.jpg?width=300&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
				&quot;1912+02:00&quot;^^&amp;lt;&lt;a href=&quot;http://www.w3.org/2001/XMLSchema#gYear&amp;gt;&quot;&gt;http://www.w3.org/2001/XMLSchema#gYear&amp;gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
				&lt;a href=&quot;http://dbpedia.org/resource/Bobby_Burns&quot;&gt;http://dbpedia.org/resource/Bobby_Burns&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
				&lt;a href=&quot;http://commons.wikimedia.org/wiki/Special:FilePath/Cuckoo_Comedies_%281919%29_-_Ad_1.jpg?width=300&quot;&gt;http://commons.wikimedia.org/wiki/Special:FilePath/Cuckoo_Comedies_(1919)_-_Ad_1.jpg?width=300&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
				&quot;1908+02:00&quot;^^&amp;lt;&lt;a href=&quot;http://www.w3.org/2001/XMLSchema#gYear&amp;gt;&quot;&gt;http://www.w3.org/2001/XMLSchema#gYear&amp;gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;
				...&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;
				...&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;
				...&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;There are too many results to list in the table above. &lt;em&gt;So, how many film stars were active during that time period?&lt;/em&gt;&lt;/p&gt;
&lt;blockquote class=&quot;SCodeFlow&quot;&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;RktBlk&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
					&lt;span class=&quot;stt&quot;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;RktPn&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;RktSym&quot;&gt;film-stars/count&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt; &lt;/span&gt;&lt;span class=&quot;RktVal&quot;&gt;1900&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt; &lt;/span&gt;&lt;span class=&quot;RktVal&quot;&gt;1945&lt;/span&gt;&lt;span class=&quot;RktPn&quot;&gt;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class=&quot;RktRes&quot;&gt;1633&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p&gt;Let’s have a look at a sample of a film star photo that we would place in our statistically generated scenes of historical events:&lt;/p&gt;
&lt;blockquote class=&quot;SCodeFlow&quot;&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;RktBlk&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
					&lt;span class=&quot;stt&quot;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;RktPn&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;RktSym&quot;&gt;film-stars/sample&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt; &lt;/span&gt;&lt;span class=&quot;RktVal&quot;&gt;1900&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt; &lt;/span&gt;&lt;span class=&quot;RktVal&quot;&gt;1945&lt;/span&gt;&lt;span class=&quot;RktPn&quot;&gt;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;img alt=&quot;image&quot; src=&quot;http://i.imgur.com/gOUQ6fb.png&quot; style=&quot;width: 250px; height: 318px; border-width: 1px; border-style: solid;&quot; /&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are a couple of problems with retrieving film star photos using DBpedia.&lt;/p&gt;
&lt;p&gt;One problem is that some photos of film stars are modern, and would look out of place in our exhibits. We could check if the photos are greyscale before displaying them, but this might not always be effective. For example, this photo of Philip Ober was taken in 1950, even though we only want film stars who were active between 1900 - 1945; we wouldn&#039;t want photos that were taken after the date when a particular historical scene that we are recreating takes place. There is no property that tells us when the photo of film star was taken.&lt;/p&gt;
&lt;p&gt;Another problem is that there isn’t information available about when some film stars were active, e.g. &lt;a href=&quot;http://dbpedia.org/page/Sonja_Henie&quot;&gt;Sonja Henie&lt;/a&gt; as mentioned in this &lt;a href=&quot;http://www.annefrank.org/en/Museum/Collecties/Movie-star-pictures/&quot;&gt;article&lt;/a&gt; from the Anne Frank House; this means that they are not included in the result of our SPARQL query. It might be possible to use the release dates of the films that actors/actresses starred in as a proxy for information on when they were active.&lt;/p&gt;
&lt;p&gt;We&#039;ve made a Unity3d picture frame asset that retrieves a random film star photo from DBpedia and displays it when the scene that it is placed in is played. The asset is available in &lt;a href=&quot;https://github.com/markfarrell/muninn&quot;&gt;this&lt;/a&gt; repository. Stay tuned for more on statistically generating historical scenes!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;form-item form-type-item&quot;&gt;
  &lt;label&gt;Language &lt;/label&gt;
 English
&lt;/div&gt;
&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/82&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Film Stars&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/12&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;DBpedia&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/46&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;linked open data&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/78&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Unity3d&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/79&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Arcadia&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/80&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Clojure&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/81&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Racket&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
 <pubDate>Thu, 29 Jan 2015 14:23:20 +0000</pubDate>
 <dc:creator>m4farrel</dc:creator>
 <guid isPermaLink="false">81 at https://blog.muninn-project.org</guid>
 <comments>https://blog.muninn-project.org/node/81#comments</comments>
</item>
<item>
 <title>Retrieving Historical Art from the Rijksmuseum</title>
 <link>https://blog.muninn-project.org/node/80</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;style type=&quot;text/css&quot;&gt;
&lt;!--/*--&gt;&lt;![CDATA[/* &gt;&lt;!--*/

/* See the beginning of &quot;scribble.css&quot;. */

/* Monospace: */
.RktIn, .RktRdr, .RktPn, .RktMeta,
.RktMod, .RktKw, .RktVar, .RktSym,
.RktRes, .RktOut, .RktCmt, .RktVal,
.RktBlk {
  font-family: monospace;
  white-space: inherit;
}

/* Serif: */
.inheritedlbl {
  font-family: serif;
}

/* Sans-serif: */
.RBackgroundLabelInner {
  font-family: sans-serif;
}

/* ---------------------------------------- */
/* Inherited methods, left margin */

.inherited {
  width: 100%;
  margin-top: 0.5em;
  text-align: left;
  background-color: #ECF5F5;
}

.inherited td {
  font-size: 82%;
  padding-left: 1em;
  text-indent: -0.8em;
  padding-right: 0.2em;
}

.inheritedlbl {
  font-style: italic;
}

/* ---------------------------------------- */
/* Racket text styles */

.RktIn {
  color: #cc6633;
  background-color: #eeeeee;
}

.RktInBG {
  background-color: #eeeeee;
}

.RktRdr {
}

.RktPn {
  color: #843c24;
}

.RktMeta {
  color: black;
}

.RktMod {
  color: black;
}

.RktOpt {
  color: black;
}

.RktKw {
  color: black;
}

.RktErr {
  color: red;
  font-style: italic;
}

.RktVar {
  color: #262680;
  font-style: italic;
}

.RktSym {
  color: #262680;
}

.RktSymDef { /* used with RktSym at def site */
}

.RktValLink {
  text-decoration: none;
  color: blue;
}

.RktValDef { /* used with RktValLink at def site */
}

.RktModLink {
  text-decoration: none;
  color: blue;
}

.RktStxLink {
  text-decoration: none;
  color: black;
}

.RktStxDef { /* used with RktStxLink at def site */
}

.RktRes {
  color: #0000af;
}

.RktOut {
  color: #960096;
}

.RktCmt {
  color: #c2741f;
}

.RktVal {
  color: #228b22;
}

/* ---------------------------------------- */
/* Some inline styles */

.together {
  width: 100%;
}

.prototype, .argcontract, .RBoxed {
  white-space: nowrap;
}

.prototype td {
  vertical-align: text-top;
}

.RktBlk {
  white-space: inherit;
  text-align: left;
}

.RktBlk tr {
  white-space: inherit;
}

.RktBlk td {
  vertical-align: baseline;
  white-space: inherit;
}

.argcontract td {
  vertical-align: text-top;
}

.highlighted {
  background-color: #ddddff;
}

.defmodule {
  width: 100%;
  background-color: #F5F5DC;
}

.specgrammar {
  float: right;
}

.RBibliography td {
  vertical-align: text-top;
}

.leftindent {
 margin-left: 1em;
 margin-right: 0em;
}

.insetpara {
 margin-left: 1em;
 margin-right: 1em;
}

.Rfilebox {
}

.Rfiletitle {
  text-align: right;
  margin: 0em 0em 0em 0em;
}

.Rfilename {
  border-top: 1px solid #6C8585;
  border-right: 1px solid #6C8585;
  padding-left: 0.5em;
  padding-right: 0.5em;
  background-color: #ECF5F5;
}

.Rfilecontent {
  margin: 0em 0em 0em 0em;
}

.RpackageSpec {
  padding-right: 0.5em;
}

/* ---------------------------------------- */
/* For background labels */

.RBackgroundLabel {
   float: right;
   width: 0px;
   height: 0px;
}

.RBackgroundLabelInner {
   position: relative;
   width: 25em;
   left: -25.5em;
   top: 0px;
   text-align: right;
   color: white;
   z-index: 0;
   font-weight: bold;
}

.RForeground {
   position: relative;
   left: 0px;
   top: 0px;
   z-index: 1;
}

/* ---------------------------------------- */
/* History */

.SHistory {
  font-size: 82%;
}
/*--&gt;&lt;!]]&gt;*/
&lt;/style&gt;&lt;style type=&quot;text/css&quot;&gt;
&lt;!--/*--&gt;&lt;![CDATA[/* &gt;&lt;!--*/

/* This file is used by default by all Scribble documents.
   See also &quot;manual.css&quot;, which is added by default by the
   `scribble/manual` language. */

/* CSS seems backward: List all the classes for which we want a
   particular font, so that the font can be changed in one place.  (It
   would be nicer to reference a font definition from all the places
   that we want it.)

   As you read the rest of the file, remember to double-check here to
   see if any font is set. */

/* Monospace: */
.maincolumn, .refpara, .refelem, .tocset, .stt, .hspace, .refparaleft, .refelemleft {
  font-family: monospace;
}

/* Serif: */
.main, .refcontent, .tocview, .tocsub, .sroman, i {
  font-family: serif;
}

/* Sans-serif: */
.version, .versionNoNav, .ssansserif {
  font-family: sans-serif;
}
.ssansserif {
  font-size: 80%;
  font-weight: bold;
}

/* ---------------------------------------- */

p, .SIntrapara {
  display: block;
  margin: 1em 0;
}

h2 { /* per-page main title */
  margin-top: 0;
}

h3, h4, h5, h6, h7, h8 {
  margin-top: 1.75em;
  margin-bottom: 0.5em;
}

.SSubSubSubSection {
  font-weight: bold;
  font-size: 0.83em; /* should match h5; from HTML 4 reference */
}

/* Needed for browsers like Opera, and eventually for HTML 4 conformance.
   This means that multiple paragraphs in a table element do not have a space
   between them. */
table p {
  margin-top: 0;
  margin-bottom: 0;
}

/* ---------------------------------------- */
/* Main */

body {
  color: black;
  background-color: #ffffff;
}

table td {
  padding-left: 0;
  padding-right: 0;
}

.maincolumn {
  width: 43em;
  margin-right: -40em;
  margin-left: 15em;
}

.main {
  text-align: left;
}

/* ---------------------------------------- */
/* Navigation */

.navsettop, .navsetbottom {
  background-color: #f0f0e0;
  padding: 0.25em 0 0.25em 0;
}

.navsettop {
  margin-bottom: 1.5em;
  border-bottom: 2px solid #e0e0c0;
}

.navsetbottom {
  margin-top: 2em;
  border-top: 2px solid #e0e0c0;
}

.navleft {
  margin-left: 1ex;
  position: relative;
  float: left;
  white-space: nowrap;
}
.navright {
  margin-right: 1ex;
  position: relative;
  float: right;
  white-space: nowrap;
}
.nonavigation {
  color: #e0e0e0;
}

.searchform {
  display: inline;
  margin: 0;
  padding: 0;
}

.nosearchform {
  display: none;
}

.searchbox {
  width: 16em;
  margin: 0px;
  padding: 0px;
  background-color: #eee;
  border: 1px solid #ddd;
  text-align: center;
  vertical-align: middle;
}

#contextindicator {
  position: fixed;
  background-color: #c6f;
  color: #000;
  font-family: monospace;
  font-weight: bold;
  padding: 2px 10px;
  display: none;
  right: 0;
  bottom: 0;
}

/* ---------------------------------------- */
/* Version */

.versionbox {
  position: relative;
  float: right;
  left: 2em;
  height: 0em;
  width: 13em;
  margin: 0em -13em 0em 0em;
}
.version {
  font-size: small;
}
.versionNoNav {
  font-size: xx-small; /* avoid overlap with author */
}

.version:before, .versionNoNav:before {
  content: &quot;Version &quot;;
}

/* ---------------------------------------- */
/* Margin notes */

.refpara, .refelem {
  position: relative;
  float: right;
  left: 2em;
  height: 0em;
  width: 13em;
  margin: 0em -13em 0em 0em;
}

.refpara, .refparaleft {
  top: -1em;
}

.refcolumn {
  background-color: #F5F5DC;
  display: block;
  position: relative;
  width: 13em;
  font-size: 85%;
  border: 0.5em solid #F5F5DC;
  margin: 0 0 0 0;
}

.refcontent {
  margin: 0 0 0 0;
}

.refcontent p {
  margin-top: 0;
  margin-bottom: 0;
}

.refparaleft, .refelemleft {
  position: relative;
  float: left;
  right: 2em;
  height: 0em;
  width: 13em;
  margin: 0em 0em 0em -13em;
}

.refcolumnleft {
  background-color: #F5F5DC;
  display: block;
  position: relative;
  width: 13em;
  font-size: 85%;
  border: 0.5em solid #F5F5DC;
  margin: 0 0 0 0;
}


/* ---------------------------------------- */
/* Table of contents, inline */

.toclink {
  text-decoration: none;
  color: blue;
  font-size: 85%;
}

.toptoclink {
  text-decoration: none;
  color: blue;
  font-weight: bold;
}

/* ---------------------------------------- */
/* Table of contents, left margin */

.tocset {
  position: relative;
  float: left;
  width: 12.5em;
  margin-right: 2em;
}
.tocset td {
  vertical-align: text-top;
}

.tocview {
  text-align: left;
  background-color: #f0f0e0;
}

.tocsub {
  text-align: left;
  margin-top: 0.5em;
  background-color: #f0f0e0;
}

.tocviewlist, .tocsublist {
  margin-left: 0.2em;
  margin-right: 0.2em;
  padding-top: 0.2em;
  padding-bottom: 0.2em;
}
.tocviewlist table {
  font-size: 82%;
}

.tocviewlisttopspace {
  margin-bottom: 1em;
}

.tocviewsublist, .tocviewsublistonly, .tocviewsublisttop, .tocviewsublistbottom {
  margin-left: 0.4em;
  border-left: 1px solid #bbf;
  padding-left: 0.8em;
}
.tocviewsublist {
  margin-bottom: 1em;
}
.tocviewsublist table,
.tocviewsublistonly table,
.tocviewsublisttop table,
.tocviewsublistbottom table {
  font-size: 75%;
}

.tocviewtitle * {
  font-weight: bold;
}

.tocviewlink {
  text-decoration: none;
  color: blue;
}

.tocviewselflink {
  text-decoration: underline;
  color: blue;
}

.tocviewtoggle {
  text-decoration: none;
  color: blue;
  font-size: 75%; /* looks better, and avoids bounce when toggling sub-sections due to font alignments */
}

.tocsublist td {
  padding-left: 1em;
  text-indent: -1em;
}

.tocsublinknumber {
  font-size: 82%;
}

.tocsublink {
  font-size: 82%;
  text-decoration: none;
}

.tocsubseclink {
  font-size: 82%;
  text-decoration: none;
}

.tocsubnonseclink {
  font-size: 82%;
  text-decoration: none;
  padding-left: 0.5em;
}

.tocsubtitle {
  font-size: 82%;
  font-style: italic;
  margin: 0.2em;
}

/* ---------------------------------------- */
/* Some inline styles */

.indexlink {
  text-decoration: none;
}

.nobreak {
  white-space: nowrap;
}

pre { margin-left: 2em; }
blockquote { margin-left: 2em; }

ol          { list-style-type: decimal; }
ol ol       { list-style-type: lower-alpha; }
ol ol ol    { list-style-type: lower-roman; }
ol ol ol ol { list-style-type: upper-alpha; }

.SCodeFlow {
  display: block;
  margin-left: 1em;
  margin-bottom: 0em;
  margin-right: 1em;
  margin-top: 0em;
  white-space: nowrap;  
}

.SVInsetFlow {
  display: block;
  margin-left: 0em;
  margin-bottom: 0em;
  margin-right: 0em;
  margin-top: 0em;
}

.SubFlow {
  display: block;
  margin: 0em;
}

.boxed {
  width: 100%;
  background-color: #E8E8FF;
}

.hspace {
}

.slant {
  font-style: oblique;
}

.badlink {
  text-decoration: underline;
  color: red;
}

.plainlink {
  text-decoration: none;
  color: blue;
}

.techoutside       { text-decoration: underline; color: #b0b0b0; }
.techoutside:hover { text-decoration: underline; color: blue; }

/* .techinside:hover doesn&#039;t work with FF, .techinside:hover&gt;
   .techinside doesn&#039;t work with IE, so use both (and IE doesn&#039;t
   work with inherit in the second one, so use blue directly) */
.techinside                    { color: black; }
.techinside:hover              { color: blue; }
.techoutside:hover&gt;.techinside { color: inherit; }

.SCentered {
  text-align: center;
}

.imageleft {
  float: left;
  margin-right: 0.3em;
}

.Smaller {
  font-size: 82%;
}

.Larger {
  font-size: 122%;
}

/* A hack, inserted to break some Scheme ids: */
.mywbr {
  display: inline-block;
  height: 0;
  width: 0;
  font-size: 1px;
}

.compact li p {
  margin: 0em;
  padding: 0em;
}

.noborder img {
  border: 0;
}

.SAuthorListBox {
  position: relative;
  float: right;
  left: 2em;
  top: -2.5em;
  height: 0em;
  width: 13em;
  margin: 0em -13em 0em 0em;
}
.SAuthorList {
  font-size: 82%;
}
.SAuthorList:before {
  content: &quot;by &quot;;
}
.author {
  display: inline;
  white-space: nowrap;
}

/* print styles : hide the navigation elements */
@media print {
  .tocset,
  .navsettop,
  .navsetbottom { display: none; }
  .maincolumn {
    width: auto;
    margin-right: 13em;
    margin-left: 0;
  }
}
/*--&gt;&lt;!]]&gt;*/
&lt;/style&gt;&lt;p&gt;The Muninn Project aims to statistically recreate scenes of historical events using &lt;a href=&quot;http://lod-cloud.net/&quot;&gt;Linked Open Data&lt;/a&gt;. Historical art is rich with information important to the study of politics and human culture - but there is so much historical art to examine that it becomes difficult to devote sufficient attention to each individual piece of art. &lt;span style=&quot;font-style: italic&quot;&gt;So, how might we resolve this problem of &quot;information overload&quot;?&lt;/span&gt; If we statistically recreate scenes of historical events, and retrieve relevant art to display in them, we argue that analysis of the art becomes easier with the additional historical context provided by the scene. &lt;span style=&quot;font-style: italic&quot;&gt;Let’s try this.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://i.imgur.com/hLSRSv2.png&quot; style=&quot;width: 600px; height: 358px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.rijksmuseum.nl/&quot;&gt;Rijksmuseum&lt;/a&gt; is a national historical art museum located in Amsterdam. They provide a public API for retrieving art objects in their collection, which you can read more about &lt;a href=&quot;https://www.rijksmuseum.nl/en/api&quot;&gt;here&lt;/a&gt;. There’s close to one million art objects made available by the Rijksmuseum. We can narrow down our search for historical art: we’ll try to sample only the art that best fits the context of our recreated historical scenes.&lt;/p&gt;
&lt;p&gt;As an example, we’ll retrieve art from the Rijksmuseum produced between 1845 and 1945 to display in a scene of a historical event that took place during that time period. We could send a &lt;span style=&quot;font-style: italic&quot;&gt;GET&lt;/span&gt; request with the following URL to retrieve the first piece of art that satisfies this constraint:&lt;/p&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;a href=&quot;https://www.rijksmuseum.nl/api/en/collection?key=WfTGhlrw&amp;amp;q=&amp;amp;yearfrom=1845&amp;amp;yearto=1945&amp;amp;p=1&amp;amp;ps=1&amp;amp;imgonly=True&amp;amp;type=print&amp;amp;format=json&quot;&gt;https://www.rijksmuseum.nl/api/en/collection?key=WfTGhlrw&amp;amp;q=&amp;amp;yearfrom=18...&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style=&quot;font-style: italic&quot;&gt;Note that:&lt;/span&gt; we’ve also restricted the type of art that we retrieve; we’re only retrieving prints, even though the Rijksmuseum also provides photos. We’ll begin to look at historical photos to display in our scenes in a future blog post. The Rijksmuseum may or may not be the best source for photos, though they certainly provide very high quality images of prints that are important to Dutch history. Calls to the Rijksmuseum API return a &lt;a href=&quot;http://www.json.org/&quot;&gt;JSON&lt;/a&gt; object, listing the titles of art that match our search parameters, and links to images of them.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-style: italic&quot;&gt;Let’s look at the art objects that match our search parameters.&lt;/span&gt; You might be wondering, how many of the Rijkmuseum’s art objects were produced between these years?&lt;/p&gt;
&lt;blockquote class=&quot;SCodeFlow&quot;&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;RktBlk&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;RktPn&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;RktSym&quot;&gt;rijksmuseum/count&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt; &lt;/span&gt;&lt;span class=&quot;RktVal&quot;&gt;1845&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt; &lt;/span&gt;&lt;span class=&quot;RktVal&quot;&gt;1945&lt;/span&gt;&lt;span class=&quot;RktPn&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class=&quot;RktRes&quot;&gt;7622&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p&gt;There is a fair volume of historical art to examine between those years. &lt;span style=&quot;font-style: italic&quot;&gt;So, what might a sample of that art look like?&lt;/span&gt;&lt;/p&gt;
&lt;blockquote class=&quot;SCodeFlow&quot;&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;RktBlk&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;RktPn&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;RktSym&quot;&gt;rijksmuseum/sample&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt; &lt;/span&gt;&lt;span class=&quot;RktVal&quot;&gt;1845&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt; &lt;/span&gt;&lt;span class=&quot;RktVal&quot;&gt;1945&lt;/span&gt;&lt;span class=&quot;RktPn&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;img alt=&quot;image&quot; src=&quot;http://i.imgur.com/gmT40Ad.png&quot; style=&quot;width: 250px; height: 144px; border-width: 1px; border-style: solid; float: left;&quot; /&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p&gt;This sample of historical art is of Japanese origin. Most of the Rijkmuseum art is not of East Asian origin, though they keep a small collection. We might wish to restrict the art we sample by the geographical location that our historical scenes take place in. This is possible with the Rijksmuseum API, but only approximately, by modern or historic country.&lt;/p&gt;
&lt;p&gt;We’ve been playing with &lt;a href=&quot;http://unity3d.com/&quot;&gt;Unity3d&lt;/a&gt;, a game engine; we’ve made a picture frame asset that retrieves and displays a sample of historical art when the scene that it is placed in is played. A repository containing that asset can be found &lt;a href=&quot;https://github.com/markfarrell/muninn&quot;&gt;here&lt;/a&gt;. The script that retrieves art from the Rijksmuseum was written in &lt;a href=&quot;http://clojure.org/&quot;&gt;Clojure&lt;/a&gt;, with the new &lt;a href=&quot;http://arcadia-unity.tumblr.com/&quot;&gt;Arcadia&lt;/a&gt; plugin; we hope to explore how the functional programming paradigm might help us further progress on the Muninn project.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://i.imgur.com/rthiiJD.png&quot; style=&quot;width: 450px; height: 276px; float: left;&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;We hope to retrieve art from the Rijksmuseum and place it in our statistically recreated scenes of historical events. The Unity3d asset that we have created facilitates this: we need to make more progress on statistically building the structure of our scenes, but we are now able to populate picture frames with art in our scenes once we have determined where they should be placed. It would be nice to display a description of the art to the viewer, to aid the analysis of the art in the context of the scene. Stay tuned for more information on this endeavour!&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;form-item form-type-item&quot;&gt;
  &lt;label&gt;Language &lt;/label&gt;
 English
&lt;/div&gt;
&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/75&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Rijksmuseum&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/76&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Historical Art&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/77&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Information Retrieval&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/78&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Unity3d&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/79&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Arcadia&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/80&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Clojure&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/taxonomy/term/81&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Racket&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
 <pubDate>Mon, 19 Jan 2015 14:02:18 +0000</pubDate>
 <dc:creator>m4farrel</dc:creator>
 <guid isPermaLink="false">80 at https://blog.muninn-project.org</guid>
</item>
</channel>
</rss>
