如何使用unicode字母进行sparql查询?

时间:2013-03-14 11:05:31

标签: python unicode sparql dbpedia

我使用SPARQL查询法语dbpedia(http://fr.dbpedia.org/)。

如果它有任何区别,我正在使用Python和SPARQLWrapper。

第一个查询工作正常。

    PREFIX dbpp:<http://dbpedia.org/property/>
    PREFIX dbpo:<http://dbpedia.org/ontology/>
    PREFIX dbpr:<http://dbpedia.org/resource/>
    SELECT ?wt ?summary ?source_url
    WHERE {
        ?wt rdfs:label "Concerto"@fr .
        OPTIONAL { ?wt dbpedia-owl:abstract ?summary . }
        OPTIONAL { ?wt foaf:isPrimaryTopicOf ?source_url . }
        filter (lang(?summary) = "fr" )
    }

此第二个查询不起作用。

    PREFIX dbpp:<http://dbpedia.org/property/>
    PREFIX dbpo:<http://dbpedia.org/ontology/>
    PREFIX dbpr:<http://dbpedia.org/resource/>
    SELECT ?wt ?summary ?source_url
    WHERE {
        ?wt rdfs:label "Opéra"@fr .
        OPTIONAL { ?wt dbpedia-owl:abstract ?summary . }
        OPTIONAL { ?wt foaf:isPrimaryTopicOf ?source_url . }
        filter (lang(?summary) = "fr" )
    }

唯一的区别是标签的价值。页面http://fr.dbpedia.org/page/Opéra存在于dbpedia中,rdfs标签设置为“Opéra”。

我认为查询不起作用,因为它包含法语字母é。我尝试过多次转义(Op%C3%A9reOp\u0233raOp\xe9ra)但没有成功。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

问题是FILTER不是可选的。因此它与<http://fr.dbpedia.org/resource/Opéra>不匹配,dbpedia-owl:abstract没有PREFIX dbpp: <http://dbpedia.org/property/> PREFIX dbpo: <http://dbpedia.org/ontology/> PREFIX dbpr: <http://dbpedia.org/resource/> SELECT ?wt ?summary ?source_url WHERE { ?wt rdfs:label "Opéra"@fr . OPTIONAL { ?wt dbpedia-owl:abstract ?summary . filter (lang(?summary) = "fr" ) } OPTIONAL { ?wt foaf:isPrimaryTopicOf ?source_url . } }

<http://fr.dbpedia.org/resource/Catégorie:Opéra>

...工作(并返回{{1}})。