我无法显示从DBpedia链接中检索到的图像,例如" dbo:thumbnail"因为CORS请求限制。
我的Sparql查询检索的DBPedia上的图像链接(在此示例中来自http://dbpedia.org/page/Sophie,_Countess_of_Wessex
)是http://commons.wikimedia.org/wiki/Special:FilePath/Sophie,_grevinna_av_Wessex.jpg?width=300
。这不是图像的最终链接,它会重定向到https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Sophie%2C_grevinna_av_Wessex.jpg/300px-Sophie%2C_grevinna_av_Wessex.jpg
。我的java脚本应用程序想要检索image-url,由于CORS请求限制而被重定向并失败。
我可以像https://commons.wikimedia.org/wiki/File:Sophie,_grevinna_av_Wessex.jpg
一样构建图像页面的URL,但这并不能解决问题,因为它只会导致图像的页面,而不是图像本身。最终的图像文件网址中有一部分我不明白 - 在上面的例子中它是" a / ab"在中间。这部分似乎是随机的。
有没有办法通过java脚本应用程序中的sparql查询检索图像URL并在画布上显示图像?
这是我的Sparql查询:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX dbc: <http://dbpedia.org/resource/Category:>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ex: <http://localhost:8890/ex/>
CONSTRUCT
{?person rdfs:label ?name .
?person ex:icon ?picture_person_final .
?person dbo:title ?title .}
WHERE
{
SERVICE <http://dbpedia.org/sparql>
{
?person dbp:fullName ?name .
?person a dbo:Person .
?person dct:subject dbc:House_of_Windsor .
?person dbo:birthDate ?birthDate .
?person dbo:thumbnail ?picture_person .
BIND (strafter(str (?picture_person) , "http://commons.wikimedia.org/wiki/Special:FilePath/" )AS ?picture_person_short1 )
BIND ( STRBEFORE(str (?picture_person_short1) , "?" )AS ?picture_person_short2 )
BIND(CONCAT ("https://commons.wikimedia.org/wiki/File:",(STR( ?picture_person_short2))) AS ?picture_person_final )
FILTER (?birthDate > "1960-01-01"^^xsd:date)
?person dbo:title ?title .
}}