Programming Technology ICT Technology Front-end development in Javascript Web Technology Clojure and Functional Programming Digital Transformation
When we process data in Clojure, we often use Map data access. For example, let’s say you have a postgresql database output or a CSV data map like the one below.
(def output-text [{:id 1 :text "aaa" :tag true}
{ :id 2 :text "bbb" :tag false}
{ :id 3 :text "ccc" :tag true}
{ :id 4 :text "ddd" :tag true}
{ :id 5 :text "eee" :tag false}])
If you want to extract arbitrary :text data from this
(defn output-data [n]
(->> output-text
(filter #(= (:text %) n))
first))
if we take
(output-data "ccc")
-> {:id 3 :text "ccc" :tag true}
If you use the “re-find” function instead of the “=” function, you can do a simple full-text search as follows. If you use the “re-find” function instead of the “=” function, you can do a simple full-text search like the following.
(defn search-data [n]
(filter #(re-find (re-pattern n) (:text %)) output-text))
Now, for a more complex nested map structure like the output of rdf store (e.g. generated from xml like this
<root>
<records>
<record id="1">record01</record>
<record id="2">record02</record>
</records>
<record id="3">record03</record>
</root>
Using clojure.data.zip, set the leiningen dependency as follows
[org.clojure/data.zip "1.0.0"]
The data is extracted in the following way.
(use 'clojure.data.zip.xml)
(require ['clojure.xml :as 'xml])
(require ['clojure.zip :as 'zip])
(xml-> (zip/xml-zip (xml/parse "in.xml")) :records :record text)
; -> ("record01" "record02")
(xml-> (zip/xml-zip (xml/parse "in.xml")) :record text)
; -> ("record03")
(xml-> (zip/xml-zip (xml/parse "in.xml")) :record (attr :id))
; -> ("3")
For data with a complex structure, it would be simpler to use SAPRQL or other queries to get processed data directly from the DB via the API.
AIシステム設計・意思決定構造の設計を専門としています。
Ontology・DSL・Behavior Treeによる判断の外部化、マルチエージェント構築に取り組んでいます。
Specialized in AI system design and decision-making architecture.
Focused on externalizing decision logic using Ontology, DSL, and Behavior Trees, and building multi-agent systems.

コメント