研究了研究 发现 RAP 有一个跟 SQL 语法很相似的东西
在SQL: $query="SELECT siren FROM table WHERE 1"
在RDQL 中
$query = 'SELECT ?siren
WHERE (?x ,<v:root>,?siren)
USING v FOR <http://www.baidu.com/#>
';
我先把我 rdf文件贴出来 大家可以参考参考
下面是 自己的 index.php 文件
在上面的语句中 执行的结果就是
我们把 $rdql_query改一下...
执行结果是
Literal("测试ns2输出来的东西")
我们在改一下..
执行结果为
Literal("测试ns4444输出来的东西");
有没有发现上面规律???
下面说说我个人的理解..
以 $rdql_query = 'SELECT ?siren WHERE (?x ,<v:google>,?siren) USING v FOR <http://www.google.com/#>';
为例select 不用说 ..跟SQL 同意
后面的 ?siren 应该就是一个变量 它必须要跟 where 语句里面的 第三个参数对应..多个 可以用 逗号","隔开
例如
$rdql_query = 'SELECT ?siren,?google WHERE (?x ,<v:google>,?siren) ,WHERE (?x ,<v:google>,?google) USING v FOR <http://www.google.com/#>';
where括号里面的 参数 就是 主语,谓语,宾语,,第一个是主语..随便设置但前面必须要加 "?"问号,
中间的 <v:google> 就是 rdf中的命名空间..这里为什么是v 而不是 <ns4:google> 呢?
这是因为后面的 USING v FOR <http://www.google.com/#> 语句的关系..
在 rd文件里面 是这样的语句
xmlns:ns4="http://www.google.com/#"
USING v FOR <http://www.google.com/#> 语句就是 用v 代替 值为 http://www.google.com/# 的 一个变量吧..
跟 SQL 语句中 select user as v 类似..
目的应该就是把一个长的 名字空间 用一个值代替...
然后 RAP 就会根据 这个语法 去从rdf中取出数据来...
有的时候可以 加上 from 就是
$rdql_query = 'SELECT ?siren from <exaple.rdf> WHERE (?x ,<v:google>,?siren) USING v FOR <http://www.google.com/#>';
它用来告诉 RAP 源 是哪个文件...因为 程序里面已经定义了文件 所以这里就不用写了
自己理解是这样 高手莫见笑...欢迎大家交流..