Фильтрация на основе URI в SParQL
Вы можете выполнить запрос ниже в Связанном MDB SPARQL Explorer. Значения ?imdbID
(последняя переменная) содержит IRI из одного из трех возможных доменов (freebase.com, rottentomatoes.com или imdb.com). Я хотел бы знать, как применить filter
так что сохраняются только строки из домена imdb.com.
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/terms/>
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
SELECT ?title ?date ?director ?imdbID
WHERE {
?film foaf:page ?imdbID.
?film dc:title ?title.
?film dc:date ?date .
?film movie:director ?directorURI.
?directorURI rdfs:label ?director .
}
1 ответ
Не знаю, почему это не было опубликовано @JoshuaTaylor в качестве ответа, но вы запрашиваете добавление фильтра @ JoshuaTaylor к вашему запросу:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/terms/>
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
SELECT ?title ?date ?director ?imdbID
WHERE {
?film foaf:page ?imdbID.
?film dc:title ?title.
?film dc:date ?date .
?film movie:director ?directorURI.
?directorURI rdfs:label ?director .
FILTER(regex(str(?imdbID), "www.imdb.com" ) )
}
Который возвращает:
<?xml version="1.0"?>
<sparql
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xs="http://www.w3.org/2001/XMLSchema#"
xmlns="http://www.w3.org/2005/sparql-results#" >
<head>
<variable name="title"/>
<variable name="date"/>
<variable name="director"/>
<variable name="imdbID"/>
</head>
<results>
<result>
<binding name="title">
<literal>Buffy the Vampire Slayer</literal>
</binding>
<binding name="date">
<literal>1992-07-31</literal>
</binding>
<binding name="director">
<literal>Fran Rubel Kuzui (Director)</literal>
</binding>
<binding name="imdbID">
<uri>http://www.imdb.com/title/tt0103893</uri>
</binding>
</result>
<result>
<binding name="title">
<literal>Batman</literal>
</binding>
<binding name="date">
<literal>1989-06-23</literal>
</binding>
<binding name="director">
<literal>Tim Burton (Director)</literal>
</binding>
<binding name="imdbID">
<uri>http://www.imdb.com/title/tt0096895</uri>
</binding>
</result>
<result>
<binding name="title">
<literal>Batman</literal>
</binding>
<binding name="date">
<literal>1966-07-30</literal>
</binding>
<binding name="director">
<literal>Leslie H. Martinson (Director)</literal>
</binding>
<binding name="imdbID">
<uri>http://www.imdb.com/title/tt0060153</uri>
</binding>
</result>
<result>
<binding name="title">
<literal>Batman & Robin</literal>
</binding>
<binding name="date">
<literal>1997-06-20</literal>
</binding>
<binding name="director">
<literal>Joel Schumacher (Director)</literal>
</binding>
<binding name="imdbID">
<uri>http://www.imdb.com/title/tt0118688</uri>
</binding>
</result>
<result>
<binding name="title">
<literal>Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb</literal>
</binding>
Если вы хотите сделать это без учета регистра, вы можете использовать i
пометить так:
FILTER(regex(str(?imdbID), "www.IMDB.com", "i" )
Если вы хотите увидеть больше информации о фильтре, взгляните на 3.1 Ограничение значений строк.