如何定义SPIN规则?

时间:2012-02-06 14:15:55

标签: sparql allegrograph spin-rdf

我正在使用AllegroGraph 4.4。我有他们关于肯尼迪家谱的示例数据库输入。我在他们的SPIN教程中复制了一个例子。这是:

(ag.spin:register-spin-function  
!ex:age  
"prefix kennedy: <http://www.franz.com/simple#>  
 prefix xs: <http://www.w3.org/2001/XMLSchema#>  
 select ( (2011 - xs:int(?birthYear)) as ?age ) {  
   ?who kennedy:birth-year ?birthYear .  
 }"  
'(?who)) 

问题是我不知道在哪里如何来注册这个功能。我尝试过WebView,但是我收到了这个错误:

Non-symbol element !ex:age in binding list.

为什么我一直收到此错误?

我应该在哪里定义规则?

1 个答案:

答案 0 :(得分:1)

代码是Common Lisp代码,它应该是源文件的一部分,或者在REPL中进行评估。你得到的错误,“非符号元素!ex:绑定列表中的年龄”似乎表明系统在尝试处理!ex:age时窒息。执行setup from the example首先帮助吗?第一行和最后一行(enable-!-reader)(register-namespace "ex" "http://franz.examples#")看起来像是为了正确读取!ex:age所需的内容。

(enable-!-reader)  
(enable-print-decoded t)  
(create-triple-store "kennedy")  
(load-ntriples "kennedy.ntriples")  
(register-namespace "kennedy" "http://www.franz.com/simple#")  
(register-namespace "ex" "http://franz.examples#")