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"]
|
||||
[instaparse "1.4.12"]]
|
||||
: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"]
|
||||
:dependencies [[dda/data-test "0.1.1"]]}})
|
||||
|
|
|
@ -1,12 +1,42 @@
|
|||
(ns org.domaindrivenarchitecture.activity-pub-poc.activitystreams2
|
||||
(:require [clojure.spec.alpha :as s]
|
||||
[orchestra.core :refer [defn-spec]]
|
||||
[org.domaindrivenarchitecture.activity-pub-poc.owl :as owl]
|
||||
[org.domaindrivenarchitecture.activity-pub-poc.rdf :as rdf]
|
||||
[org.domaindrivenarchitecture.activity-pub-poc.core :as core]))
|
||||
[org.domaindrivenarchitecture.activity-pub-poc.xsd :as xsd]))
|
||||
|
||||
(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
|
||||
;TODO: how do we translate this? rdfs:domain [a owl:Class ; owl:unionOf (as:Link as:Object)]
|
||||
(s/def ::id (s/and ::owl/FunctionalProperty
|
||||
::owl/DatatypeProperty
|
||||
(s/def
|
||||
::id (s/and ::owl/DatatypeProperty
|
||||
::owl/FunctionalProperty
|
||||
::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
|
||||
"A swallow spec translation implementation of owl. Inheritance of FunctionalProperty
|
||||
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
|
||||
; * Datatype properties link individuals to data values.
|
||||
|
@ -15,8 +17,22 @@
|
|||
|
||||
;http://www.w3.org/2002/07/owl#FunctionalProperty
|
||||
;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
|
||||
;https://www.w3.org/TR/owl-ref/#Deprecation
|
||||
(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