我使用的是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.
为什么我一直收到这个错误?
我应该在哪里定义规则?
代码是Common Lisp代码,应该是源文件的一部分,或者在REPL中求值。您得到的错误是"非符号元素!例如:绑定列表中的年龄"似乎表明系统在尝试处理!ex:age
时阻塞。执行示例中的设置首先有帮助吗?第一行和最后一行,(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#")