Skip to content

Commit

Permalink
Add nopath, novar, and noblank tests for colls
Browse files Browse the repository at this point in the history
  • Loading branch information
kelvinqian00 committed Feb 7, 2024
1 parent 62b2cef commit 79aefe7
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 8 deletions.
20 changes: 13 additions & 7 deletions src/main/com/yetanalytics/flint/spec/triple.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,12 @@
:ax/prefix-iri ax/prefix-iri-spec
:ax/rdf-type ax/rdf-type-spec))

(s/def ::predicate-noblank
::predicate-nopath)

(s/def ::predicate-novar-noblank
::predicate-novar)

;; Objects (includes Lists)

(s/def ::object
Expand All @@ -115,8 +121,8 @@
:ax/prefix-iri ax/prefix-iri-spec
:ax/bnode ax/bnode-spec
:ax/literal ax/literal-spec
:triple/list ::list-nopath
:triple/bnodes ::bnodes-nopath))
:triple/list ::list-novar
:triple/bnodes ::bnodes-novar))

(s/def ::object-noblank
(s/or :ax/var ax/variable-spec
Expand Down Expand Up @@ -212,10 +218,10 @@
(make-pred-objs-spec ::predicate-novar obj-set-novar-spec))

(def pred-objs-noblank-spec
(make-pred-objs-spec ::predicate-nopath obj-set-noblank-spec))
(make-pred-objs-spec ::predicate-noblank obj-set-noblank-spec))

(def pred-objs-novar-noblank-spec
(make-pred-objs-spec ::predicate-novar obj-set-novar-noblank-spec))
(make-pred-objs-spec ::predicate-novar-noblank obj-set-novar-noblank-spec))

;; Subject Predicate Object

Expand Down Expand Up @@ -259,16 +265,16 @@
(s/tuple ::subject ::predicate ::object))

(def triple-vec-nopath-spec
(s/tuple ::subject ::predicate-nopath ::object))
(s/tuple ::subject-nopath ::predicate-nopath ::object-nopath))

(def triple-vec-novar-spec
(s/tuple ::subject-novar ::predicate-novar ::object-novar))

(def triple-vec-noblank-spec
(s/tuple ::subject-noblank ::predicate-nopath ::object-noblank))
(s/tuple ::subject-noblank ::predicate-noblank ::object-noblank))

(def triple-vec-novar-noblank-spec
(s/tuple ::subject-novar-noblank ::predicate-novar ::object-novar-noblank))
(s/tuple ::subject-novar-noblank ::predicate-novar-noblank ::object-novar-noblank))

;; Triple Vectors (Coll, no predicates + objects)

Expand Down
124 changes: 123 additions & 1 deletion src/test/com/yetanalytics/flint/spec/triple_test.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -178,4 +178,126 @@
[:ax/prefix-iri :q]
[:ax/literal "w"]]]
(s/conform ts/triple-spec
'[[:p1 ?x1 :p2 ?x2] :q "w"]))))))
'[[:p1 ?x1 :p2 ?x2] :q "w"])))
(testing "and path + var in subject"
(is (= '[:triple.vec/spo
[[:triple/bnodes
[[[:triple/path
[:path/branch
[[:path/op cat]
[:path/paths
[[:path/terminal [:ax/prefix-iri :p1]]
[:path/terminal [:ax/prefix-iri :p2]]]]]]]
[:ax/var ?x]]]]
[:ax/prefix-iri :q]
[:ax/literal "w"]]]
(s/conform ts/triple-spec
'[[(cat :p1 :p2) ?x] :q "w"])))
(is (= '[:triple.nform/spo
[[[:triple/bnodes
[[[:triple/path
[:path/branch
[[:path/op cat]
[:path/paths
[[:path/terminal [:ax/prefix-iri :p1]]
[:path/terminal [:ax/prefix-iri :p2]]]]]]]
[:ax/var ?x]]]]
[:triple.nform/po
[[[:ax/prefix-iri :q]
[:triple.nform/o
[[:ax/literal "w"]]]]]]]]]
(s/conform ts/triple-spec
'{[(cat :p1 :p2) ?x] {:q #{"w"}}})))
(is (not (s/valid? ts/triple-nopath-spec
'[[(cat :p1 :p2) ?x] :q "w"])))
(is (not (s/valid? ts/triple-novar-spec
'[[(cat :p1 :p2) ?x] :q "w"])))
(is (not (s/valid? ts/triple-noblank-spec
'[[(cat :p1 :p2) ?x] :q "w"])))
(is (not (s/valid? ts/triple-novar-noblank-spec
'[[(cat :p1 :p2) ?x] :q "w"])))
(is (not (s/valid? ts/triple-nopath-spec
'[[(cat :p1 :p2) ?x]])))
(is (not (s/valid? ts/triple-novar-spec
'[[(cat :p1 :p2) ?x]])))
(is (not (s/valid? ts/triple-noblank-spec
'[[(cat :p1 :p2) ?x]])))
(is (not (s/valid? ts/triple-novar-noblank-spec
'[[(cat :p1 :p2) ?x]])))
(is (not (s/valid? ts/triple-nopath-spec
'{[(cat :p1 :p2) ?x] {:q #{"w"}}})))
(is (not (s/valid? ts/triple-novar-spec
'{[(cat :p1 :p2) ?x] {:q #{"w"}}})))
(is (not (s/valid? ts/triple-noblank-spec
'{[(cat :p1 :p2) ?x] {:q #{"w"}}})))
(is (not (s/valid? ts/triple-novar-noblank-spec
'{[(cat :p1 :p2) ?x] {:q #{"w"}}})))
(is (not (s/valid? ts/triple-novar-spec
'[(?x ?y) :q "w"])))
(is (not (s/valid? ts/triple-noblank-spec
'[(?x ?y) :q "w"])))
(is (not (s/valid? ts/triple-novar-noblank-spec
'[(?x ?y) :q "w"])))
(is (not (s/valid? ts/triple-novar-spec
'{(?x ?y) {:q #{"w"}}})))
(is (not (s/valid? ts/triple-noblank-spec
'{(?x ?y) {:q #{"w"}}})))
(is (not (s/valid? ts/triple-novar-noblank-spec
'{(?x ?y) {:q #{"w"}}}))))
(testing "and path + var in object"
(is (= '[:triple.vec/spo
[[:ax/prefix-iri :x]
[:ax/prefix-iri :q]
[:triple/bnodes
[[[:triple/path
[:path/branch
[[:path/op cat]
[:path/paths
[[:path/terminal [:ax/prefix-iri :r1]]
[:path/terminal [:ax/prefix-iri :r2]]]]]]]
[:ax/literal "v"]]]]]]
(s/conform ts/triple-spec
'[:x :q [(cat :r1 :r2) "v"]])))
(is (= '[:triple.nform/spo
[[[:ax/prefix-iri :x]
[:triple.nform/po
[[[:ax/prefix-iri :q]
[:triple.nform/o
[[:triple/bnodes
[[[:triple/path
[:path/branch
[[:path/op cat]
[:path/paths
[[:path/terminal [:ax/prefix-iri :r1]]
[:path/terminal [:ax/prefix-iri :r2]]]]]]]
[:ax/literal "v"]]]]]]]]]]]]
(s/conform ts/triple-spec
'{:x {:q #{[(cat :r1 :r2) "v"]}}})))
(is (not (s/valid? ts/triple-nopath-spec
'[:x :q [(cat :r1 :r2) "v"]])))
(is (not (s/valid? ts/triple-novar-spec
'[:x :q [:r ?v]])))
(is (not (s/valid? ts/triple-noblank-spec
'[:x :q [:r ?v]])))
(is (not (s/valid? ts/triple-novar-noblank-spec
'[:x :q [:r ?v]])))
(is (not (s/valid? ts/triple-nopath-spec
'{:x {:q #{[(cat :r1 :r2) "v"]}}})))
(is (not (s/valid? ts/triple-novar-spec
'{:x {:q #{[:r ?v]}}})))
(is (not (s/valid? ts/triple-noblank-spec
'{:x {:q #{[:r ?v]}}})))
(is (not (s/valid? ts/triple-novar-noblank-spec
'{:x {:q #{[:r ?v]}}})))
(is (not (s/valid? ts/triple-novar-spec
'[:x :q (?w ?v)])))
(is (not (s/valid? ts/triple-noblank-spec
'[:x :q (?w ?v)])))
(is (not (s/valid? ts/triple-novar-noblank-spec
'[:x :q (?w ?v)])))
(is (not (s/valid? ts/triple-novar-spec
'{:x {:q #{(?w ?v)}}})))
(is (not (s/valid? ts/triple-noblank-spec
'{:x {:q #{(?w ?v)}}})))
(is (not (s/valid? ts/triple-novar-noblank-spec
'{:x {:q #{(?w ?v)}}})))))))

0 comments on commit 79aefe7

Please sign in to comment.