我在 asp.net 中使用 dotnetrdf,并尝试通过 sparql 获取作者姓名的 altLabels 我的查询是这样的:
SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"), "http://dbpedia.org");
SparqlParameterizedString AuthorQueryString = new SparqlParameterizedString();
AuthorQueryString.Namespaces.AddNamespace("rdfs", new Uri("http://www.w3.org/2000/01/rdf-schema#"));
AuthorQueryString.Namespaces.AddNamespace("owl", new Uri("http://www.w3.org/2002/07/owl#"));
AuthorQueryString.CommandText = "Select * {?s rdfs:label ?o."+
"optional{?s owl:sameAs ?w. FILTER(contains(str(?w),\"wikidata\")).}"+
"FILTER(contains(str(?o),'jack')).}"+
"LIMIT 1 ";
它工作正常,但是当我用阿拉伯语字符串替换名称“jack”时,如“محمود”,我得到 WebException: The remote server returned an error: (406) Not Acceptable。 我试过了
myHttpWebRequest.Headers.Add("Accept-Language:ar")
;但没有成功。
该查询在 SPARQL 查询编辑器上运行良好
和回报
哦 http://dbpedia.org/resource/Mahmoud_Darwish“محمود درويش”@arhttp://www.wikidata.org/entity/Q207720