---
# System prepended metadata

title: '今週何知った？ week:37'

---

## 各自発表

> [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 . }
```