2017-08-24 14 views
0

Terry Halpinによる論理データモデリングのチュートリアル(下記リンク先)に従っていましたが、データを挿入できませんでした。ここで https://www.brcommunity.com/articles.php?id=b760logiQLを使用した論理データモデリング

コードです:

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"). ' 

エラーメッセージ:

it gives me this

誰が間違っているかを理解するために私を助けていただけますか?

答えて

1

Terryがこのチュートリアルを作成したとき、LogicBlox/datalog/LogiQL言語では廃止予定の構文ショートカットが使用できました。スキーマの最初のブロックは、書かれているようにokです。アサーションの2番目の実行ブロックは、エンティティおよび参照モードの述語を明示的に宣言する必要があります。

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

あなたも(または以前に)とき、または前+officiallyUses(c, l).

をアサートに言語エンティティを表明するため +Country(c), +hasCountryCode(c:"AU").

同じパターンが適用されたエンティティとその参照モードをアサートする必要が+isLarge(c)を主張する:ここで働いサンプルです

+0

こんにちはダン、ありがとう。完璧に動作します。 – kushol

関連する問題