(testovano na http://sparql.org/sparql.html)
1/
PREFIX keg:
SELECT ?name ?mail ?url
FROM
WHERE {
?member keg:completeName ?name;
keg:email ?mail .
OPTIONAL { ?member keg:webPage ?url . }
}
2/
PREFIX dc:
PREFIX rss:
PREFIX xsd:
SELECT ?posttitle ?posturl ?postdate
FROM
WHERE {
?post rss:title ?posttitle .
?post dc:creator "Frederick Giasson" .
?post rss:link ?posturl .
?post dc:date ?postdate .
FILTER (xsd:dateTime(?postdate) > "2011-09-22T00:00:00Z"^^xsd:dateTime)
}
3/
PREFIX foaf:
PREFIX dc:
SELECT ?title ?weblog
FROM
WHERE {
?author foaf:interest .
?author foaf:weblog ?weblog .
?weblog dc:title ?title .
}
4/
dve reseni pro ctvrty ukol:
1.) porovnani pres jmena autoru (?name)
PREFIX foaf:
PREFIX dc:
SELECT DISTINCT ?name ?username
FROM
FROM
WHERE {
?item dc:creator ?name .
?author foaf:name ?name .
?author foaf:holdsAccount ?account .
?account foaf:accountServiceHomepage .
?account foaf:accountName ?username .
}
2.) porovnani pres adresy weblogu autoru (?weblogurl a ?weblogtxt) -
tohle je trochu "hack", protoze http://planetrdf.com/index.rdf uvadi
adresy weblogu ne jako URI, ale jako literaly, takze se ve FILTER musi
URI prevest na literal (pomoci funkce str()) a porovnat
PREFIX foaf:
PREFIX dc:
SELECT ?name ?username ?weblog
FROM
FROM
WHERE {
?item dc:relation ?weblogtxt .
?author foaf:weblog ?weblogurl .
?author foaf:name ?name .
?author foaf:holdsAccount ?account .
?account foaf:accountServiceHomepage .
?account foaf:accountName ?username .
FILTER(str(?weblogurl) = ?weblogtxt)
}