0

我正在学习 Terry Halpin 的名为逻辑数据建模的教程(链接如下),但无法插入数据。 https://www.brcommunity.com/articles.php?id=b760

这是代码:

addblock 'Country(c), hasCountryCode(c:cc) -> string(cc).
Language(l), hasLanguageName(l:ln) -> string(ln).
isLarge(c) -> Country(c).
officiallyUses(c, l) -> Country(c), Language(l). 
isMultilingual(c)  <-  officiallyUses(c, l1), officiallyUses(c, l2), l1 != l2.'

exec'
+isLarge("AU"), +isLarge("CA"), +isLarge("FR"), +isLarge("US").
+officiallyUses("AU", "English"), +officiallyUses("CA", "English").
+officiallyUses("CA", "French"), +officiallyUses("FR", "French").
+officiallyUses("LU", "French"),  +officiallyUses("LU", "German").
+officiallyUses("LU", "Luxembourgish").
+officiallyUses("US", "English"), +officiallyUses("VA", "Italian"). '

错误信息:

它给了我这个

谁能帮我理解什么是错的?

4

1 回答 1

1

当 Terry 编写该教程时,LogicBlox/datalog/LogiQL 语言允许一些已被弃用的语法快捷方式。架构的第一个块可以按照编写的方式进行。现在需要第二个执行断言块来显式声明实体和引用模式谓词。这是一个工作示例:

+Country(c),
+isLarge(c),
+hasCountryCode(c:"AU"),
+Language(l),
+hasLanguageName(l:"English"),
+officiallyUses(c, l).

要断言+isLarge(c),您还需要(或以前)断言实体及其引用模式+Country(c), +hasCountryCode(c:"AU").

相同的模式适用于在断言时或之前断言语言实体+officiallyUses(c, l).

于 2017-08-24T12:21:51.170 回答