did some cool spec work
This commit is contained in:
parent
8a02865192
commit
e70edd2f9c
4 changed files with 71 additions and 10 deletions
|
@ -25,6 +25,7 @@
|
||||||
[org.clojars.quoll/raphael "0.1.6"]
|
[org.clojars.quoll/raphael "0.1.6"]
|
||||||
[instaparse "1.4.12"]]
|
[instaparse "1.4.12"]]
|
||||||
:main ^:skip-aot org.domaindrivenarchitecture.activity-pub-poc.core
|
:main ^:skip-aot org.domaindrivenarchitecture.activity-pub-poc.core
|
||||||
:profiles {:test {:test-paths ["src/test/clj"]
|
:profiles {:test {:test-paths ["src/test/cljc"
|
||||||
|
"src/test/clj"]
|
||||||
:resource-paths ["src/test/resources"]
|
:resource-paths ["src/test/resources"]
|
||||||
:dependencies [[dda/data-test "0.1.1"]]}})
|
:dependencies [[dda/data-test "0.1.1"]]}})
|
||||||
|
|
|
@ -1,12 +1,42 @@
|
||||||
(ns org.domaindrivenarchitecture.activity-pub-poc.activitystreams2
|
(ns org.domaindrivenarchitecture.activity-pub-poc.activitystreams2
|
||||||
(:require [clojure.spec.alpha :as s]
|
(:require [clojure.spec.alpha :as s]
|
||||||
|
[orchestra.core :refer [defn-spec]]
|
||||||
[org.domaindrivenarchitecture.activity-pub-poc.owl :as owl]
|
[org.domaindrivenarchitecture.activity-pub-poc.owl :as owl]
|
||||||
[org.domaindrivenarchitecture.activity-pub-poc.rdf :as rdf]
|
[org.domaindrivenarchitecture.activity-pub-poc.xsd :as xsd]))
|
||||||
[org.domaindrivenarchitecture.activity-pub-poc.core :as core]))
|
|
||||||
|
(defn-spec
|
||||||
|
is-functional-property? boolean?
|
||||||
|
"Checks whether spec is a FunctionalProperty."
|
||||||
|
[spec keyword?]
|
||||||
|
(some #(clojure.string/includes? % "FunctionalProperty") (s/describe spec)))
|
||||||
|
|
||||||
;http://www.w3.org/ns/activitystreams#id
|
;http://www.w3.org/ns/activitystreams#id
|
||||||
;TODO: how do we translate this? rdfs:domain [a owl:Class ; owl:unionOf (as:Link as:Object)]
|
(s/def
|
||||||
(s/def ::id (s/and ::owl/FunctionalProperty
|
::id (s/and ::owl/DatatypeProperty
|
||||||
::owl/DatatypeProperty
|
::owl/FunctionalProperty
|
||||||
::owl/DeprecatedProperty
|
::owl/DeprecatedProperty
|
||||||
core/uri-string?))
|
::xsd/anyURI))
|
||||||
|
|
||||||
|
;http://www.w3.org/ns/activitystreams#attachment
|
||||||
|
;TODO: definition in progress
|
||||||
|
(s/def ::attachment
|
||||||
|
(s/and ::owl/ObjectProperty))
|
||||||
|
|
||||||
|
;http://www.w3.org/ns/activitystreams#result
|
||||||
|
;TODO: definition in progress
|
||||||
|
(s/def ::result
|
||||||
|
(s/and ::owl/ObjectProperty))
|
||||||
|
|
||||||
|
;http://www.w3.org/ns/activitystreams#Object
|
||||||
|
;TODO: definition in progress
|
||||||
|
(s/def ::Object (s/keys :opt-un [::attachment]))
|
||||||
|
|
||||||
|
;http://www.w3.org/ns/activitystreams#Activity
|
||||||
|
;TODO: definition in progress
|
||||||
|
(s/def ::Activity
|
||||||
|
(s/and ::Object
|
||||||
|
(s/keys :opt-un [::result])))
|
||||||
|
|
||||||
|
;http://www.w3.org/ns/activitystreams#Like
|
||||||
|
(s/def ::Like ::Activity)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
(ns org.domaindrivenarchitecture.activity-pub-poc.owl
|
(ns org.domaindrivenarchitecture.activity-pub-poc.owl
|
||||||
"A swallow spec translation implementation of owl. Inheritance of FunctionalProperty
|
"A swallow spec translation implementation of owl. Inheritance of FunctionalProperty
|
||||||
is realized in deep implemented."
|
is realized in deep implemented."
|
||||||
(:require [clojure.spec.alpha :as s]))
|
(:require
|
||||||
|
[clojure.spec.alpha :as s]
|
||||||
|
[orchestra.core :refer [defn-spec]]))
|
||||||
|
|
||||||
; Properties:https://www.w3.org/TR/owl-ref/#Property
|
; Properties:https://www.w3.org/TR/owl-ref/#Property
|
||||||
; * Datatype properties link individuals to data values.
|
; * Datatype properties link individuals to data values.
|
||||||
|
@ -15,8 +17,22 @@
|
||||||
|
|
||||||
;http://www.w3.org/2002/07/owl#FunctionalProperty
|
;http://www.w3.org/2002/07/owl#FunctionalProperty
|
||||||
;https://www.w3.org/TR/owl-ref/#FunctionalProperty-def
|
;https://www.w3.org/TR/owl-ref/#FunctionalProperty-def
|
||||||
(s/def ::FunctionalProperty any?)
|
(defn-spec
|
||||||
|
functional? boolean?
|
||||||
|
[elem any?]
|
||||||
|
(and
|
||||||
|
(some? elem)
|
||||||
|
(or
|
||||||
|
(not (coll? elem))
|
||||||
|
(and (vector? elem) (= 1 (count elem)))
|
||||||
|
(and (list? elem) (= 1 (count elem))))))
|
||||||
|
(s/def ::FunctionalProperty functional?)
|
||||||
|
|
||||||
;http://www.w3.org/2002/07/owl#DeprecatedProperty
|
;http://www.w3.org/2002/07/owl#DeprecatedProperty
|
||||||
;https://www.w3.org/TR/owl-ref/#Deprecation
|
;https://www.w3.org/TR/owl-ref/#Deprecation
|
||||||
(s/def ::DeprecatedProperty any?)
|
(s/def ::DeprecatedProperty any?)
|
||||||
|
|
||||||
|
|
||||||
|
;http://www.w3.org/2002/07/owl#ObjectProperty
|
||||||
|
;https://www.w3.org/TR/owl-ref/#ObjectProperty
|
||||||
|
(s/def ::ObjectProperty any?)
|
|
@ -0,0 +1,14 @@
|
||||||
|
(ns org.domaindrivenarchitecture.activity-pub-poc.owl-test
|
||||||
|
(:require
|
||||||
|
[clojure.test :refer [deftest is are testing run-tests]]
|
||||||
|
[clojure.spec.test.alpha :as st]
|
||||||
|
[clojure.spec.alpha :as s]
|
||||||
|
[org.domaindrivenarchitecture.activity-pub-poc.owl :as sut]))
|
||||||
|
|
||||||
|
(deftest functional-predicate
|
||||||
|
(is (sut/functional? "str"))
|
||||||
|
(is (sut/functional? 2))
|
||||||
|
(is (sut/functional? ["str"]))
|
||||||
|
(is (not (sut/functional? [])))
|
||||||
|
(is (not (sut/functional? nil)))
|
||||||
|
(is (not (sut/functional? [1 2]))))
|
Loading…
Reference in a new issue