- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 SPARQL 的新手,所以这可能是一个愚蠢的问题,但我在插入数据时遇到了问题。我正在使用 HTTPS REST 端点与数据库通信。
我有以下三元组:
<urn:data:Gen`000001>
<urn:data:content>
"This is a literal"
我 urlencode()
因为,正如我所想,它不会给我任何错误,因为它具有正确的 URI 格式:
<urn:data:Gen%60000001>
...
但是 % 字符引发错误(因为如果我使用 -
而不是 %
它会起作用。)因为 this answer我尝试反斜杠 %
字符:
<urn:data:Gen\%60000001>
...
然后我尝试使用 URL 而不是 URN:
<https://test.com/data/Gen%60000001>
<https://test.com/data/content>
...
但它一直给我同样的错误:
The requested URL returned error: 400 Bad Request
那我做错了什么?我怎样才能转义 %
字符(也许还有其他 urlencode 字符?)或者我应该问,这是正确的做法吗,在提交之前执行 urlencode()
?
编辑:
我的 PHP 代码:
$q = 'update=INSERT DATA { '.
'<https://test.com/data/Gen%60000001> '.
'<https://test.com/data/content> '.
'"This is a literal." }';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$config->db->public->neptune->cluster."/sparql");
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $q);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
if (curl_errno($ch)) {
$error = curl_error($ch);
}
if(!$error)
echo $server_output;
else
echo $error;
同样,如果我只是将 %
更改为 -
它会起作用:
query=select * where {?s ?p ?o}
result:
"s" : {
"type" : "uri",
"value" : "https://test.com/data/Gen-60000001"
},
"p" : {
"type" : "uri",
"value" : "https://test.com/data/content"
},
"o" : {
"type" : "literal",
"value" : "This is a literal."
}
EDIT2 + 解决方案:
正如 Kelvin Lawrence 所指出的,这很可能是 PHP 方面的一些解析/编码问题。我删除了 CURLOPT_FAILONERROR
,现在出现了这些错误:
using URN:
{
"detailedMessage":"Malformed query: Lexical error at line 1, column 28.
Encountered: \"`\" (96), after : \"\"",
"requestId":"***",
"code":"MalformedQueryException"
}
using URL:
{
"detailedMessage":"Malformed query: Lexical error at line 1, column 32.
Encountered: \"/\" (47), after : \"test.com\"",
"requestId":"***",
"code":"MalformedQueryException"}
看起来使用 URN 的错误表明 Neptune 在我对其进行 urlencode 之前将其接收(或解码)为原始字符。因此,如果我在发送之前再次对它进行 urlencode,它就可以正常工作:
$q = 'update=INSERT DATA { '.
'<https://test.com/data/'.urlencode(urlencode('Gen`60000001')).'> '.
'<https://test.com/data/content> '.
'"This is a literal." }';
但是 为什么 Neptune 接收它是解码的,或者它为什么要解码它? 它是在 POST 正文中发送的,所以不需要解码,对吧?我错过了什么?
编辑 3:
还有一点我要提一下:
$q = 'query=select * where {?s ?p ?o}';
此查询完美运行,而带有换行符的相同查询不起作用:
$q = 'query=select *
where {
?s
?p
?o
}';
它给我这个错误:
{
"detailedMessage":"Malformed query: Encountered \"\" at line 1, column 9.\n
Was expecting one of:\n \"{\" ...\n \"from\" ...\n \"where\" ...\n
\"with\" ...\n ",
"requestId":"***",
"code":"MalformedQueryException"
}
为什么?我可以通过将查询保留在一行来解决这个问题,但这不是它应该的工作方式。
最佳答案
尝试使用 base64_encode/decode。在 php 文件之间传输数据对我来说很有效
文件A:$string = "sadfkjæ4#%"#¤%";$string_for_transfer = base64_encode($string);
文件 B:
$string = $_GET["string"];
$string_data = base64_decode($string);
echo $string_data;
给出:
sadfkjæ4#%"#¤%
关于PHP curl : Encoding/Parsing (AWS Neptune using SPARQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63922585/
我正在使用 SPARQL,我想知道是否可以在 in 子句中放入 sparql?更具体地说,我需要获取对此 sparql 查询具有特定条件的实体(s1,s2)[s1 在某个字段上的聚合值大于 5] se
我们有办法在 SPARQL 中做一个不减少的累加和吗? 例如, SELECT ?p WHERE { VALUES ?p { 1 1 2 } } ORDER BY ?p 将导致 1 2 4, - 而
在这个小片段中,第二行的 a 是做什么的? CONSTRUCT { ?uri a skos:Concept ; skos:prefLabel ?prefLabel ; 我确
我写了一个 Sparql 查询。 PREFIX table: SELECT ?name ?color FROM WHERE { ?element table:group ?group. ?gro
下面的两个查询有什么区别吗? select distinct ?i where{ ?i rdf:type . FILTER EXISTS { ?i ?b.
我不太明白为什么在SPARQL中他们没有实现基本的逻辑运算符。然而,在大多数情况下,可以通过多种方式获得相同的结果。 这个问题的目的是快速引用可以替代“or”语句的可能方式。 这是我能想到的: 1)联
我的问题很简单:我有一个源my:g1,其中包含: my:a1 my:b "literal 1" 然后我有第二个源my:g2,其中包含: my:a2 my:b my:c. my:c rdfs:label
我在处理数字数据类型时遇到 SPARQL 问题。 我有一个本体 ( http://cabas.ugr.es/ontology/ugr ),我在其中定义了一对属性,表示特定性别的学生人数:
我有以下 SPARQL 查询: PREFIX rdfs: PREFIX type: PREFIX prop: SELECT * WHERE { ?person a foaf:Per
我想知道如何在sparql中表达以下问题: “请告诉我每个 child 都上麻省理工学院的 parent ” 更一般地说,我想知道查询 sparql 的限制是什么?请问数据库中有哪些类型的答案不能
我正在尝试编写一个优雅的 SPARQL,为多个可能的查询提供一个解决方案。我有多个主语和多个谓词,我想接收一个对象。单一解决方案的存在非常不确定,因此我给出了多种选择。如果我没记错的话,这可以通过以下
这是一个关于 Sparql 和 Wikidata 的问题。我想制定一个返回实例类型关系的查询,但如果它不可用,则返回其子类。我尝试过: SELECT DISTINCT ?ent_type WHER
我想做一些类似的事情 { SELECT ?page, "A" AS ?type WHERE { ?s rdfs:label "Microsoft"@en;
我正在尝试进行 SPARQL 查询,该查询返回一个变量,其中包含两个单词,由某些内容分隔。实际上,我尝试获取一个变量,如 ?πληθυσμός_population(希腊语和英语)。但是,我更喜欢与“
我想知道 SPARQL 默认情况下是否采用开放世界假设,或者这是否取决于执行 SPARQL 查询的三元组存储。 这个假设在查询中的含义是什么。 致以诚挚的问候。 最佳答案 嗯.... 我想知道这对于这
我在处理数字数据类型时遇到 SPARQL 问题。 我有一个本体 ( http://cabas.ugr.es/ontology/ugr ),我在其中定义了一对属性,表示特定性别的学生人数:
我正在玩DBPedia . 通过这个查询,我得到了所有出生在伦敦的人: SELECT ?person WHERE { ?person dbo:birthPlace :London } 但
我需要处理 SPARQL 查询。有没有人有很好的链接来学习 SPARQL 查询?我正在寻找有关 SPARQL 查询和示例语法的好文章,以便我可以快速学习。 最佳答案 Lee Feigenbaum 的
我有一个 SPARQL 查询,它在 Virtuoso SPARQL 查询编辑器中运行时提供结果,但相同的查询在 SPARQL 查询验证器中给出语法错误。问题是什么?为什么显示语法错误? PREFIX
我正在运行 sparql 查询 PREFIX rdfs: PREFIX rdfs: SELECT DISTINCT(?film_link) ?film_name ?wiki
我是一名优秀的程序员,十分优秀!