Faster implementation of TPF for SDB (#54)
* Initial performance improvements to TPF * Add faster counts for TPF * Correct end count * Bug fixes, use hashes for filtering * Initial LDF SPARQL client * Handle blank nodes correctly
This commit is contained in:
parent
0191ae6dbb
commit
b5da11c2be
17 changed files with 1446 additions and 112 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,549 @@
|
|||
/*! @license MIT ©2014–2016 Ruben Verborgh, Ghent University – imec */
|
||||
|
||||
html {
|
||||
font-size: 11pt;
|
||||
background: #f6f6f6;
|
||||
}
|
||||
html, input, textarea, button, pre {
|
||||
font: 1em/1.4 'Open Sans', Verdana, Arial, sans-serif;
|
||||
-webkit-text-size-adjust: none;
|
||||
}
|
||||
* {
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
body {
|
||||
max-width: 650px;
|
||||
margin: 0 auto;
|
||||
padding: 1em 3em;
|
||||
background: white;
|
||||
box-shadow: 2px 2px 15px 0px rgba(50, 50, 50, 0.75);
|
||||
}
|
||||
|
||||
a, button, label {
|
||||
font-weight: bold;
|
||||
}
|
||||
a, button, input:hover, label {
|
||||
color: #be1622;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
color: #be1622;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
button {
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
background-color: #f6f6f6;
|
||||
border: 1px solid #999999;
|
||||
border-radius: 3px;
|
||||
margin: 0;
|
||||
padding: 5px 8px;
|
||||
cursor: pointer;
|
||||
}
|
||||
button:hover {
|
||||
background-color: #ececec;
|
||||
}
|
||||
button:active {
|
||||
margin: 1px -1px -1px 1px;
|
||||
}
|
||||
input {
|
||||
padding: 1px 5px;
|
||||
font-size: 10pt;
|
||||
}
|
||||
label:after {
|
||||
content: ":";
|
||||
}
|
||||
|
||||
header h1 {
|
||||
margin: .3em 0 .1em;
|
||||
font-size: 1.95em;
|
||||
}
|
||||
header p {
|
||||
font-weight: bold;
|
||||
margin: 0 0 1.5em;
|
||||
}
|
||||
header a {
|
||||
color: inherit;
|
||||
}
|
||||
header .logo {
|
||||
float: right;
|
||||
}
|
||||
header img {
|
||||
margin: -9px -11px 0 0;
|
||||
height: 81px;
|
||||
}
|
||||
|
||||
main {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
.ldf-client, .ldf-client * {
|
||||
max-width: 100%;
|
||||
}
|
||||
ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
fieldset > ul > li {
|
||||
margin: .3em 0;
|
||||
clear: both;
|
||||
}
|
||||
fieldset > ul > li:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
select {
|
||||
width: 430px;
|
||||
}
|
||||
|
||||
.timing {
|
||||
float: right;
|
||||
font-size: 10pt;
|
||||
padding: .7em 0;
|
||||
}
|
||||
|
||||
.chosen {
|
||||
float: right;
|
||||
}
|
||||
|
||||
input.datetime {
|
||||
float: right;
|
||||
font-size: 13px;
|
||||
border: 1px solid #999999;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.details {
|
||||
display: none;
|
||||
}
|
||||
.details-toggle {
|
||||
display: block;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 0 -35px;
|
||||
float: right;
|
||||
cursor: pointer;
|
||||
background: url(../images/memento.svg) no-repeat center center / contain;
|
||||
opacity: .8;
|
||||
}
|
||||
.details-toggle:hover, .details-toggle.enabled {
|
||||
opacity: 1;
|
||||
}
|
||||
.details-toggle.enabled {
|
||||
background-image: url(../images/memento.svg#active);
|
||||
width: 25px; /* for Chrome */
|
||||
}
|
||||
|
||||
textarea {
|
||||
box-sizing: border-box;
|
||||
min-height: 11em;
|
||||
width: 100%;
|
||||
padding-left: 1em;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
font-size: .95em;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.results {
|
||||
height: 23.5em;
|
||||
font-size: 10pt;
|
||||
margin: .5em 0 1em;
|
||||
}
|
||||
.results a {
|
||||
font-weight: normal;
|
||||
color: inherit;
|
||||
}
|
||||
.result {
|
||||
width: calc(100% - 2px);
|
||||
}
|
||||
.result dl {
|
||||
border: 1px solid #be1622;
|
||||
margin: 0 0 1em;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.result dl:hover {
|
||||
color: white;
|
||||
background-color: #be1622;
|
||||
}
|
||||
.result dl:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
.result dt {
|
||||
float: left;
|
||||
clear: left;
|
||||
background-color: #be1622;
|
||||
color: white;
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
padding: 0 .5em;
|
||||
margin: 0 .5em 0 0;
|
||||
}
|
||||
.result dd {
|
||||
margin: 0 .5em 0 1em;
|
||||
}
|
||||
.result dt:last-of-type {
|
||||
border-radius: 0 0 0 5px;
|
||||
}
|
||||
.results .text {
|
||||
white-space: pre-wrap;
|
||||
margin-right: -999999px; /* avoid that long URLs alter body width */
|
||||
}
|
||||
|
||||
.log {
|
||||
color: #666;
|
||||
height: 6.3em;
|
||||
font-size: 9pt;
|
||||
line-height: 1.6;
|
||||
margin: .5em -999999px 1em 0;
|
||||
}
|
||||
.log p {
|
||||
margin: 0;
|
||||
}
|
||||
.log a {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.results, .log {
|
||||
width: 100%;
|
||||
overflow: scroll;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
position: relative;
|
||||
contain: layout;
|
||||
}
|
||||
|
||||
footer {
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
@media (max-width: 725px) {
|
||||
body {
|
||||
padding: .1em 1em;
|
||||
font-size: 10pt;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.4em;
|
||||
}
|
||||
header img {
|
||||
height: 70px;
|
||||
}
|
||||
header p {
|
||||
margin: 0 0 .5em;
|
||||
}
|
||||
|
||||
select {
|
||||
width: 350px;
|
||||
}
|
||||
.chosen, input.datetime {
|
||||
float: none;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.details-toggle {
|
||||
display: inline-block;
|
||||
margin: 0 0 -8px 10px;
|
||||
}
|
||||
|
||||
.log {
|
||||
max-width: 90%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 550px) {
|
||||
h1 {
|
||||
ine-height: 1.2;
|
||||
}
|
||||
header p, .logo {
|
||||
display: none;
|
||||
}
|
||||
label {
|
||||
display: block;
|
||||
}
|
||||
select {
|
||||
width: 250px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Styling below derived from
|
||||
* Chosen, a Select Box Enhancer for jQuery and Prototype
|
||||
* by Patrick Filler for Harvest, http://getharvest.com
|
||||
*
|
||||
* Version 1.4.2
|
||||
* Full source at https://github.com/harvesthq/chosen
|
||||
* Copyright (c) 2011-2015 Harvest http://getharvest.com
|
||||
*
|
||||
* MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
|
||||
*/
|
||||
|
||||
.chosen {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
font-size: 13px;
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
user-select: none;
|
||||
}
|
||||
.chosen * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.chosen .chosen-drop {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: -9999px;
|
||||
z-index: 1010;
|
||||
width: 100%;
|
||||
border: 1px solid #999999;
|
||||
border-top: 0;
|
||||
background: #fff;
|
||||
}
|
||||
.chosen.chosen-with-drop .chosen-drop {
|
||||
left: 0;
|
||||
}
|
||||
.chosen a {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
.chosen-single .chosen-single {
|
||||
position: relative;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
padding: 0 0 0 8px;
|
||||
height: 25px;
|
||||
border: 1px solid #999999;
|
||||
border-radius: 3px;
|
||||
background-color: #fff;
|
||||
text-decoration: none;
|
||||
white-space: nowrap;
|
||||
line-height: 24px;
|
||||
font-weight: normal;
|
||||
color: inherit;
|
||||
}
|
||||
.chosen-single .chosen-single span {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
margin-right: 26px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.chosen-single .chosen-single-with-deselect span {
|
||||
margin-right: 38px;
|
||||
}
|
||||
.chosen-single .chosen-single abbr {
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
right: 26px;
|
||||
display: block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background: url('../images/chosen-sprite.png') -42px 1px no-repeat;
|
||||
font-size: 1px;
|
||||
}
|
||||
.chosen-single .chosen-single abbr:hover {
|
||||
background-position: -42px -10px;
|
||||
}
|
||||
.chosen-single .chosen-single div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
display: block;
|
||||
width: 18px;
|
||||
height: 100%;
|
||||
}
|
||||
.chosen-single .chosen-single div b {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url('../images/chosen-sprite.png') no-repeat 0px 2px;
|
||||
}
|
||||
.chosen-single .chosen-search {
|
||||
position: relative;
|
||||
z-index: 1010;
|
||||
margin: 0;
|
||||
padding: 3px 4px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.chosen-single .chosen-search input[type="text"] {
|
||||
margin: 1px 0;
|
||||
padding: 4px 20px 4px 5px;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
outline: 0;
|
||||
border: 1px solid #999999;
|
||||
background: white url('../images/chosen-sprite.png') no-repeat 100% -20px;
|
||||
background: url('../images/chosen-sprite.png') no-repeat 100% -20px;
|
||||
font-size: 1em;
|
||||
line-height: normal;
|
||||
border-radius: 0;
|
||||
}
|
||||
.chosen-single .chosen-drop {
|
||||
margin-top: -1px;
|
||||
border-radius: 0 0 4px 4px;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
.chosen-single.chosen-single-nosearch .chosen-search {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
|
||||
.chosen-results {
|
||||
position: relative;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
margin: 0 4px 4px 0;
|
||||
padding: 0 0 0 4px;
|
||||
max-height: 240px;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.chosen-results li {
|
||||
display: none;
|
||||
margin: 0;
|
||||
padding: 5px 6px;
|
||||
list-style: none;
|
||||
line-height: 15px;
|
||||
word-wrap: break-word;
|
||||
-webkit-touch-callout: none;
|
||||
}
|
||||
li.active-result {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
li.highlighted {
|
||||
background-color: #be1622;
|
||||
color: #fff;
|
||||
}
|
||||
li.no-results {
|
||||
display: none;
|
||||
}
|
||||
.chosen-results li em {
|
||||
font-style: normal;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.chosen-choices {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
padding: 0 5px;
|
||||
width: 100%;
|
||||
height: auto !important;
|
||||
height: 1%;
|
||||
border: 1px solid #999999;
|
||||
border-radius: 3px;
|
||||
background-color: #fff;
|
||||
cursor: text;
|
||||
}
|
||||
.chosen-choices li {
|
||||
float: left;
|
||||
list-style: none;
|
||||
}
|
||||
li.search-field {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
li.search-field input[type="text"] {
|
||||
margin: 1px 0;
|
||||
padding: 0;
|
||||
height: 20px;
|
||||
outline: 0;
|
||||
border: 0 !important;
|
||||
font-size: 100%;
|
||||
line-height: normal;
|
||||
border-radius: 0;
|
||||
}
|
||||
li.search-choice {
|
||||
position: relative;
|
||||
margin: 1px 5px 1px 0;
|
||||
padding: 3px 20px 3px 5px;
|
||||
max-width: 100%;
|
||||
border-radius: 3px;
|
||||
background-color: #f6f6f6;
|
||||
border: 1px solid #cacaca;
|
||||
line-height: 13px;
|
||||
cursor: default;
|
||||
}
|
||||
li.search-choice:hover {
|
||||
background-color: #ececec;
|
||||
}
|
||||
li.search-choice span {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
li.search-choice .search-choice-close {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 3px;
|
||||
display: block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background: url('../images/chosen-sprite.png') -42px 1px no-repeat;
|
||||
font-size: 1px;
|
||||
}
|
||||
li.search-choice .search-choice-close:hover {
|
||||
background-position: -42px -10px;
|
||||
}
|
||||
li.search-choice-focus {
|
||||
background: #d4d4d4;
|
||||
}
|
||||
li.search-choice-focus .search-choice-close {
|
||||
background-position: -42px -10px;
|
||||
}
|
||||
.chosen-results {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.chosen-drop .result-selected {
|
||||
display: list-item;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.chosen-active.chosen-with-drop .chosen-single {
|
||||
border: 1px solid #999999;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.chosen-active.chosen-with-drop .chosen-single div {
|
||||
border-left: none;
|
||||
}
|
||||
.chosen-active.chosen-with-drop .chosen-single div b {
|
||||
background-position: -18px 2px;
|
||||
}
|
||||
.chosen-active .chosen-choices {
|
||||
z-index: 100;
|
||||
max-height: 500px;
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi), only screen and (min-resolution: 1.5dppx) {
|
||||
.chosen-rtl .chosen-search input[type="text"],
|
||||
.chosen-single .chosen-single abbr,
|
||||
.chosen-single .chosen-single div b,
|
||||
.chosen-single .chosen-search input[type="text"],
|
||||
.chosen-multi .chosen-choices .search-choice .search-choice-close,
|
||||
.chosen .chosen-results-scroll-down span,
|
||||
.chosen .chosen-results-scroll-up span {
|
||||
background-image: url('../images/chosen-sprite@2x.png') !important;
|
||||
background-size: 52px 37px !important;
|
||||
background-repeat: no-repeat !important;
|
||||
}
|
||||
}
|
||||
|
||||
.results {
|
||||
line-height: 1.5em;
|
||||
}
|
|
@ -85,7 +85,7 @@ legend {
|
|||
}
|
||||
|
||||
label {
|
||||
width: 100px;
|
||||
width: 200px;
|
||||
display: block;
|
||||
float: left;
|
||||
clear: both;
|
||||
|
|
43
api/src/main/resources/tpf/client.ftl.html
Normal file
43
api/src/main/resources/tpf/client.ftl.html
Normal file
|
@ -0,0 +1,43 @@
|
|||
<h2>Query from your browser</h2>
|
||||
<p>
|
||||
Your browser executes these queries locally
|
||||
using <a href="http://linkeddatafragments.org/in-depth/#tpf" target="_blank">Triple Pattern Fragments</a>.
|
||||
</p>
|
||||
<fieldset class="ldf-client">
|
||||
<ul>
|
||||
<li>
|
||||
<label>Query</label>
|
||||
<textarea class="queryText"></textarea>
|
||||
</li>
|
||||
<li>
|
||||
<button class="start" style="display: inline-block;">Execute query</button>
|
||||
<button class="stop" style="display: none;">Stop execution</button>
|
||||
<span class="timing"></span>
|
||||
</li>
|
||||
<!-- example queries -->
|
||||
<li>
|
||||
<label>Query results</label>
|
||||
<div class="results"><div class="text"></div><div class="scrollRunway" style="position: absolute; height: 1px; width: 1px; transition: transform 0.2s; -webkit-transition: transform 0.2s; transform: translate(0px, 0px);"> </div></div>
|
||||
</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
<link rel="stylesheet" href="${ assetsPath }ldf-client.css">
|
||||
<script>
|
||||
var ldfAssetsPath = '${ assetsPath }';
|
||||
</script>
|
||||
<script src="${ assetsPath }ldf-client-ui-packaged.js"></script>
|
||||
<script>jQuery(function($){$(".ldf-client").queryui(
|
||||
{
|
||||
"datasources": [
|
||||
<#if datasources??>
|
||||
<#list datasources?keys as datasourceName>
|
||||
{
|
||||
"name": "${datasources[datasourceName].getTitle() }",
|
||||
"url": "${homePath}/${datasourceName}"
|
||||
}<#if datasourceName?has_next>, </#if>
|
||||
</#list>
|
||||
</#if>
|
||||
]
|
||||
|
||||
}
|
||||
)})</script>
|
122
api/src/main/resources/tpf/examples.ftl.html
Normal file
122
api/src/main/resources/tpf/examples.ftl.html
Normal file
|
@ -0,0 +1,122 @@
|
|||
<li>
|
||||
<label>Example queries</label>
|
||||
<select class="query" style="display: none;"><option></option><option value="SELECT ?movie ?title ?name
|
||||
WHERE {
|
||||
?movie dbpedia-owl:starring [ rdfs:label "Brad Pitt"@en ];
|
||||
rdfs:label ?title;
|
||||
dbpedia-owl:director [ rdfs:label ?name ].
|
||||
FILTER LANGMATCHES(LANG(?title), "EN")
|
||||
FILTER LANGMATCHES(LANG(?name), "EN")
|
||||
}">Directors of movies starring Brad Pitt</option><option value="SELECT DISTINCT ?entity WHERE {
|
||||
?entity a dbpedia-owl:Airport;
|
||||
dbpprop:cityServed dbpedia:Italy.
|
||||
}">Airports in Italy</option><option value="SELECT ?name ?deathDate WHERE {
|
||||
?person a dbpedia-owl:Artist;
|
||||
rdfs:label ?name;
|
||||
dbpedia-owl:birthPlace [ rdfs:label "York"@en ].
|
||||
FILTER LANGMATCHES(LANG(?name), "EN")
|
||||
OPTIONAL { ?person dbpprop:dateOfDeath ?deathDate. }
|
||||
}">Artists born in York</option><option value="CONSTRUCT {
|
||||
?artist a dbpedia-owl:Artist.
|
||||
?artist dbpedia-owl:birthDate ?date.
|
||||
}
|
||||
WHERE {
|
||||
?artist dbpedia-owl:influencedBy dbpedia:Pablo_Picasso.
|
||||
?artist a dbpedia-owl:Artist.
|
||||
?artist dbpedia-owl:birthDate ?date.
|
||||
}">Artists influenced by Picasso</option><option value="SELECT DISTINCT ?book ?author
|
||||
WHERE {
|
||||
?book rdf:type dbpedia-owl:Book;
|
||||
dbpedia-owl:author ?author.
|
||||
}
|
||||
LIMIT 100">Authors of books</option><option value="SELECT ?award WHERE {
|
||||
?award a dbpedia-owl:Award;
|
||||
dbpprop:country [ dbpedia-owl:language dbpedia:Dutch_language ].
|
||||
}">Award ceremonies in Dutch speaking countries</option><option value="SELECT DISTINCT ?performer ?name WHERE {
|
||||
?work dbpedia-owl:writer dbpedia:Michael_Jackson;
|
||||
dbpedia-owl:musicalArtist ?performer.
|
||||
OPTIONAL {
|
||||
?performer rdfs:label ?name.
|
||||
FILTER LANGMATCHES(LANG(?name), "EN")
|
||||
}
|
||||
}">Bands Michael Jackson wrote a song for</option><option value="SELECT ?software ?company WHERE {
|
||||
?software dbpedia-owl:developer ?company.
|
||||
?company dbpedia-owl:locationCountry [ rdfs:label "Belgium"@en ].
|
||||
}">Belgian software</option><option value="PREFIX yago: <http://dbpedia.org/class/yago/>
|
||||
SELECT ?person
|
||||
WHERE {
|
||||
?person a yago:Carpenters, yago:PeopleExecutedByCrucifixion.
|
||||
}">Carpenters killed by crucifixion</option><option value="PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
|
||||
SELECT ?actor ?cause
|
||||
WHERE {
|
||||
?actor dbpedia-owl:deathCause ?cause.
|
||||
?actor dc:subject <http://dbpedia.org/resource/Category:American_male_film_actors>
|
||||
}">Death causes of male American actors</option><option value="SELECT ?dessert ?fruit
|
||||
WHERE {
|
||||
?dessert dbpedia-owl:type <http://dbpedia.org/resource/Dessert>;
|
||||
dbpedia-owl:ingredient ?fruit.
|
||||
?fruit dbpedia-owl:kingdom <http://dbpedia.org/resource/Plant>.
|
||||
}">Desserts made with plants</option><option value="SELECT DISTINCT ?device WHERE {
|
||||
dbpedia:Raspberry_Pi dbpprop:os ?operatingSystem.
|
||||
?device a dbpedia-owl:Device;
|
||||
dbpprop:os ?operatingSystem.
|
||||
FILTER (!(?device = dbpedia:Raspberry_Pi))
|
||||
}">Devices with the same OS as the Raspberry Pi</option><option value="SELECT DISTINCT ?entity ?event
|
||||
WHERE {
|
||||
?entity a dbpedia-owl:Event;
|
||||
rdfs:label ?event;
|
||||
?predicate <http://dbpedia.org/resource/Trentino> .
|
||||
FILTER(langMatches(lang(?event), "EN"))
|
||||
}">Events that took place in the Trentino region</option><option value="SELECT ?titleEng ?title
|
||||
WHERE {
|
||||
?movie dbpprop:starring [ rdfs:label "Natalie Portman"@en ];
|
||||
rdfs:label ?titleEng, ?title.
|
||||
FILTER LANGMATCHES(LANG(?titleEng), "EN")
|
||||
FILTER (!LANGMATCHES(LANG(?title), "EN"))
|
||||
}">Foreign titles of Natalie Portman movies</option><option value="SELECT ?indDish ?belDish ?ingredient
|
||||
WHERE {
|
||||
?indDish a dbpedia-owl:Food;
|
||||
dbpedia-owl:origin dbpedia:India;
|
||||
dbpedia-owl:ingredient ?ingredient.
|
||||
?belDish a dbpedia-owl:Food;
|
||||
dbpedia-owl:origin dbpedia:Belgium;
|
||||
dbpedia-owl:ingredient ?ingredient.
|
||||
}">Indian dishes that have ingredients in common with Belgian dishes</option><option value="SELECT DISTINCT ?artist ?band ?bandName WHERE {
|
||||
{ <http://dbpedia.org/resource/Queen_(band)> dbpedia-owl:bandMember ?artist. }
|
||||
UNION
|
||||
{ <http://dbpedia.org/resource/Queen_(band)> dbpedia-owl:formerBandMember ?artist. }
|
||||
?band dbpedia-owl:formerBandMember ?artist;
|
||||
rdfs:label ?bandName.
|
||||
FILTER (?band != <http://dbpedia.org/resource/Queen_(band)>)
|
||||
}">Other bands of Queen members</option><option value="SELECT DISTINCT ?person
|
||||
WHERE {
|
||||
dbpedia:Jesus dc:subject ?common.
|
||||
?person a foaf:Person;
|
||||
dc:subject ?common.
|
||||
}
|
||||
LIMIT 1000">People who have something in common with Jesus</option><option value="SELECT ?place ?relation
|
||||
WHERE {
|
||||
?place rdf:type dbpedia-owl:Settlement;
|
||||
?relation dbpedia:Barack_Obama;
|
||||
}">Places that have something to do with Barack Obama</option><option value="SELECT ?clubName ?playerName WHERE {
|
||||
?club a dbpedia-owl:SoccerClub;
|
||||
dbpedia-owl:ground ?city;
|
||||
rdfs:label ?clubName.
|
||||
?player dbpedia-owl:team ?club;
|
||||
dbpedia-owl:birthPlace ?city;
|
||||
rdfs:label ?playerName.
|
||||
?city dbpedia-owl:country dbpedia:Spain.
|
||||
|
||||
FILTER LANGMATCHES(LANG(?clubName), "EN")
|
||||
FILTER LANGMATCHES(LANG(?playerName), "EN")
|
||||
}">Soccer players born in their club's city</option><option value="SELECT ?entity ?label ?comment
|
||||
WHERE {
|
||||
?entity a dbpedia-owl:MythologicalFigure;
|
||||
rdfs:label ?label;
|
||||
dc:subject <http://dbpedia.org/resource/Category:Women_in_Greek_mythology>;
|
||||
rdfs:comment ?comment
|
||||
|
||||
FILTER(langMatches(lang(?label), "EN"))
|
||||
FILTER(langMatches(lang(?comment), "EN"))
|
||||
}">Women in Greek mythology</option></select><div class="chosen chosen-single" style="width: 430px;" title=""><a class="chosen-single chosen-default" tabindex="-1"><span> </span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off"></div><ul class="chosen-results"></ul></div></div>
|
||||
</li>
|
|
@ -12,10 +12,9 @@
|
|||
</#list>
|
||||
</#if>
|
||||
</dl>
|
||||
<p>The current dataset <em class="dataset">index</em> contains metadata about these datasets.</p>
|
||||
</div>
|
||||
|
||||
<#include "fragment.ftl.html">
|
||||
<#include "client.ftl.html">
|
||||
</#macro>
|
||||
|
||||
<@display_page/>
|
Loading…
Add table
Add a link
Reference in a new issue