2

フランスの dbpedia ( http://fr.dbpedia.org/ ) を SPARQL でクエリしています。

違いがある場合は、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" )
    }

この 2 番目のクエリは機能しません。

    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) を試みましたが、成功しませんでした。

何か案が?

4

1 に答える 1

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>)。

于 2013-03-14T21:35:20.050 に答える