The first line of “code” would be this query, that returns a list of Keith Richards’s guitars (click to check it out):
http://api.headup.com/v1?raw=true&q=Keith Richards/popularmeaning/`instrument`/render(“videolist.html”)
Let’s break down the query to its parts:
- Keith Richards/popularmeaning – gives us the URI (a unique ID) for Keith Richards, dbpedia:Keith_Richards.
- `instrument` – that’s a fuzzy matching of the free-form text “instrument” with a predicate of dbpedia:Keith_Richards. We get a list of the instruments that Keith played.
- Then we render this list of instruments as using a template (that we’ve prepared in advance) called videolist.html.
The rest of the code resides inside the videolist.html template. Let’s have a look inside:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SemantiNet's Video Portal</title>
<link rel="stylesheet" href="http://www.blueprintcss.org/blueprint/screen.css">
<style type="text/css" media="screen">
body {background-color: #FAFAFF}
</style>
</head>
<body>
<div class="container">
<div class="span-24">
<table style="font-family: Consolas; font-size: x-small; background-color: white" class="span-24">
<%foreach ./take(20)%>
<tr width="100%">
<td>
<%select keytermsforquery/youtube:getplayers/first%>
<iframe title="YouTube video player" class="youtube-player" type="text/html" width="300" height="230" src="http://www.youtube.com/embed/<%= f:v1/split('/')/*/at(4)%/>" frameborder="0">
</iframe>
</%select%>
</td>
<td>
<h2><%= label%/></h2>
<%= abstract/str:unescapeunicode%/>
</td>
</tr>
</%foreach%>
</table>
</div>
</div>
</body>
</html>
Most of the template is made of simple HTML markup. The query lines are:
- keytermsforquery/youtube:getplayers/first
- keytermsforquery - query refinements, for making calls to search APIs (YouTube in this case) – adds semantic “cues” when querying APIs to get more accurate results.
- youtube:getplayers – gets YouTube players for the entities.
- Take only the first video, we want 1 for each instrument.
- label – brings a nice readable name.
- abstract/str:unescapeunicode – brings the Wikipedia abstract – and removes Unicode escaping.
- Venues of Paris – “dbpedia:Paris/venues/render(“videolist.html”)
- Popular touchscreen mobile phones – category:Touchscreen_mobile_phones/instances/popular/render(“videolist.html”)
- Dog breeds video gallery – yago:DogTypes/instances/render(“videolist.html”)
- Airports in Paris – dbpedia:Paris/-dbpedia-owl:city/oftype(“Airport”)/render(“videolist.html”)




