## 各自発表 > [name=makicamel] ### Arel って何? > 従来のActiveRecordでは、(⁠世の中のほとんど全てのO/Rマッパーがそうであるように)文字列ベースで組み立てたSQLをfind()メソッドの呼び出しでドカッとまとめてDBに投げていたのですが、ActiveRecord 3では、RubyのDSLで書かれた条件を最終的にSQLの文字列に変換する処理は「Arel」という中間ライブラリで行われるようになっています。 > > 汎用オブジェクト指向関係代数クエリ言語「Arel」 > > Arelとは、「⁠Relational Algebra」または「Active Relation」の略で、その名前から想像がつくとおり、ActiveRecordから派生した、「⁠関係代数」をRubyのオブジェクトで取り扱うためのライブラリです。 [第43回 Rails 3を支える名脇役たち その1 - Arel - | gihyo.jp](https://gihyo.jp/dev/serial/01/ruby/0043) ### Arel の歴史 - https://github.com/nkallen/arel - 2007 年 12 月 31 日に Nick Kallen が Initial Commit - https://github.com/nkallen/arel/commit/960bbcb3ce4a82cf4f031d1c6682ce4c1a04474d - 2008 年 4 月頃から Bryan Helmkamp が contribute - https://github.com/nkallen/arel/commit/84507c03f49092387b6c57129d350bc5c8463b40 - https://github.com/brynary/arel - 2009 年 8 月頃フォーク、v0.1.0 リリース - https://github.com/brynary/arel/releases/tag/v0.1.0 - https://github.com/rails/arel - 2011 年 4 月末頃フォーク - https://github.com/rails/rails/pull/32097 - Rails 6.0.0 beta1 で Rails にマージ > [name=ken3ypa] ### セマンティックWebとRDFについて 1998年にティム・バーナーズ・リーにより提唱された概念。 「コンテンツに統一された意味情報(メタデータ)を付与し、計算機可読なメタデータを対象に高度な処理を施すことで、人間と機械とのコミュニケーション実現を目指す次世代Webのこと」 => コンピュータが判別可能なメタデータを付与して、Webでの情報収集・分析をしやすくしましょう、と理解 ### メタデータを記述する仕組み - メタデータはRDF(Resource Description Framework)によって記述する - XMLベースで記述される - RDFでは、リソース・プロパティ・プロパティ値の三つの組みでリソース間の関係を表現する。また、この三つの組のことをトリプルという - 身近なところだと、RSSを記述するのに利用されている - ref:https://www.soumu.go.jp/menu_kyotsuu/rss_information.html ### RDF問い合わせ言語、SPARQLについて RDFの検索にはSPARQLが用いられる。SQLに似た構文で抽出条件を記述し、問い合わせができる。また、SPARQLで問い合わせ可能なデータベースとして SPARQL Endpoint が存在する。 HTTPメソッドとしてはGETまたはPOSTが選択できる https://www.w3.org/TR/sparql11-protocol/#query-operation 下記は東京都のリソースに関連づけられたプロパティとその値を取得するクエリ https://ja.dbpedia.org/sparql ``` select distinct * where { <http://ja.dbpedia.org/resource/東京都> ?p ?o . } ```