Terms are equivalent only if they are both well-formed
rdf/entailment/d.scm
132 | 132 | ||
133 | 133 | (define (equiv? n1 n2) | |
134 | 134 | (match (list n1 n2) | |
135 | - | ((($ rdf-literal l1 ($ rdf-datatype _ _ _ _ lexical->value1 _) lang1) | |
136 | - | ($ rdf-literal l2 ($ rdf-datatype _ _ _ _ lexical->value2 _) lang2)) | |
135 | + | ((($ rdf-literal l1 ($ rdf-datatype _ _ lexical1? _ lexical->value1 _) lang1) | |
136 | + | ($ rdf-literal l2 ($ rdf-datatype _ _ lexical2? _ lexical->value2 _) lang2)) | |
137 | 137 | (and (equal? (and lang1 (string-downcase lang1)) | |
138 | 138 | (and lang2 (string-downcase lang2))) | |
139 | - | (equal? (lexical->value1 l1)) | |
140 | - | (equal? (lexical->value2 l2)))) | |
139 | + | (lexical1? l1) | |
140 | + | (lexical2? l2) | |
141 | + | (equal? (lexical->value1 l1) (lexical->value2 l2)))) | |
141 | 142 | (_ (equal? n1 n2)))) | |
142 | 143 | ||
143 | 144 | (define (validate-mapping mapping g1 g2) |
rdf/entailment/rdf.scm
158 | 158 | g | |
159 | 159 | (loop (append (recognize augment-set vocabulary) g))))))) | |
160 | 160 | ||
161 | - | (define (equiv? n1 n2) | |
162 | - | (match (list n1 n2) | |
163 | - | ((($ rdf-literal l1 ($ rdf-datatype _ _ _ _ lexical->value1 _) lang1) | |
164 | - | ($ rdf-literal l2 ($ rdf-datatype _ _ _ _ lexical->value2 _) lang2)) | |
165 | - | (and (equal? lang1 lang2) | |
166 | - | (equal? (lexical->value1 l1)) | |
167 | - | (equal? (lexical->value2 l2)))) | |
168 | - | (_ (equal? n1 n2)))) | |
169 | - | ||
170 | - | (define (validate-mapping mapping g1 g2) | |
171 | - | (match g1 | |
172 | - | ('() #t) | |
173 | - | ((t1 g1 ...) | |
174 | - | (and (not (null? (filter | |
175 | - | (lambda (t2) | |
176 | - | (let ((s1 (rdf-triple-subject t1)) | |
177 | - | (s2 (rdf-triple-subject t2)) | |
178 | - | (p1 (rdf-triple-predicate t1)) | |
179 | - | (p2 (rdf-triple-predicate t2)) | |
180 | - | (o1 (rdf-triple-object t1)) | |
181 | - | (o2 (rdf-triple-object t2))) | |
182 | - | (and | |
183 | - | (if (blank-node? s1) | |
184 | - | (equiv? (assoc-ref mapping s1) s2) | |
185 | - | (equiv? s1 s2)) | |
186 | - | (equal? p1 p2) | |
187 | - | (if (blank-node? o1) | |
188 | - | (equiv? (assoc-ref mapping o1) o2) | |
189 | - | (equiv? o1 o2))))) | |
190 | - | g2))) | |
191 | - | (validate-mapping mapping g1 g2))))) | |
192 | - | ||
193 | 161 | (define (entails? g e vocabulary) | |
194 | 162 | "Return true if g entails e" | |
195 | 163 | (let* ((g (recognize g vocabulary)) |