sudoku in SWAP

Hallo,
for those who are intrested:
the implementation of sudoku in swap
(it's only a grid of 3 X 3 but this can easily be extended):

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 
@prefix owl: <http://www.w3.org/2002/07/owl#> . 
@prefix : <http://www.example.com/sudoku#> . 
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix list: <http://www.w3.org/2000/10/swap/list#>.


:l1 :hasCells (:c11 :c12 :c13).
:l2 :hasCells (:c21 :c22 :c23).
:l3 :hasCells (:c31 :c32 :c33).
:l4 :hasCells (:c11 :c21 :c31).
:l5 :hasCells (:c12 :c22 :c32).
:l6 :hasCells (:c13 :c23 :c33).

:c11 :hasValue "1".
:c22 :hasValue "2".
:c33 :hasValue "3". 

{?l :hasCells ?L. ?x1 list:in ?L} => {?l :hasCell ?x1}.

{?x1 :hasValue ?V.?l :hasCell ?x1. ?l :hasCell ?x2. 
?x1 log:notEqualTo ?x2.} => {?x2 :notHasValue ?V}.

{?x :notHasValue "1". ?x :notHasValue "2"} => { ?x :hasValue "3"}.
{?x :notHasValue "1". ?x :notHasValue "3"} => { ?x :hasValue "2"}.
{?x :notHasValue "3". ?x :notHasValue "2" } => { ?x :hasValue "1"}.

and the query is:

?x :hasValue ?y.

I find this to be an intresting example of using what I call
a declarative negation: the negation of having a value is done by 
creating a negative predicate: :notHasValue. In the same sense we could replace
log:notEqualTo with declarations:
:c11 :notEqualTo :c12.  etc...
and in the rule:
?x1 :notEqualTo ?x2.
which will have the desired effect because there
will be no declaration: :c11 :notEqualTo :c11.
But surely the builtin is more easy to use.
Anyway, I think the point is that negation in logic can not be
avoided.

With kind regards, 


Guido Naudts
Lic. zoologie
Ir.informatica
Adviseur Department of Justice
Secretarisdreef 5@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 


2288 Bouwel 
Belgium






      ____________________________________________________________________________________
Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ 

Received on Friday, 29 February 2008 23:56:48 UTC