【MarkLogic】サンプルであそぶ（XQuery）

※試用版を使っています。

[（入門ガイド）Getting Started With MarkLogic Server — Chapter 6](https://docs.marklogic.com/9.0/guide/getting-started/xquery)

#サンプルを読み込む
MarkLogicと一緒にインストールされたサンプルで遊ぶ。
クエリが描ける画面を呼び出す。（マニュアル上は:8000だが、:8002が正解のようだ）

```
http://localhost:8002/
```

- コンソールが出現
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383325/75eabea0-1bde-670f-8c58-895c4cde8ccb.png)

- サンプルをインポートする
（marklogic-dir）/Samples/w3c-use-cases.xml
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383325/efbab225-9543-a43a-6ae4-622062643061.png)

- サンプルを含む新たなWorkSpaceが誕生
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383325/064c45fd-46d4-081a-6b5a-192110e56978.png)

- サンプルデータをロードするモジュールを実行（XQuery）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383325/426b7680-02ed-520e-6061-2ab62b3eb678.png)

- Database：Documentsにロードされたようだが、この時点では管理画面を見ても変化はよくわからなかった。Size増えた？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383325/aa9fd056-288e-c6ac-7d37-286a21023f87.png)

#サンプルクエリでデータを参照する
1991年以降に発売された「Addison-Wesley」の書籍の発売年とタイトルを表示。
XQueryは初だが、シンプルなforループの処理なので解りやすい。

```Q1.1_Value_Constraints.xq
(:  __________________________________________________________
 ::  (Q1.1)
 ::  List books published by Addison-Wesley after 1991
 ::  including their year and title.
 :: __________________________________________________________
  :)
<bib>
 {
  for $b in doc("http://bstore1.example.com/bib.xml")/bib/book
  where $b/publisher = "Addison-Wesley" and $b/@year > 1991
  return
    <book year="{ $b/@year }">
     { $b/title }
    </book>
 }
</bib>
```

- XML
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383325/84390dea-6041-341b-4357-7cbc12aa9713.png)

- TEXT形式
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383325/944eec92-50ba-11d2-99a7-c4ec05fd2f7e.png)

### 条件を変更して実行してみた
- 1991以降 → 1993以降
- priceの値を追加表示

```Q1.1_Value_Constraints.xq
<bib>
 {
  for $b in doc("http://bstore1.example.com/bib.xml")/bib/book
  where $b/publisher = "Addison-Wesley" and $b/@year > 1993
  return
    <book year="{ $b/@year }">
     { $b/title }
     { $b/price }
    </book>
 }
</bib>
```

変更が効いたようだ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383325/af870529-2bbf-fe77-1d51-9d1bbefaaf42.png)

## まとめ（やったこと）
1. xdmpを利用して任意のURLを持つ文書をデータベースへ登録
2. URLを利用してデータを検索

[【参考】xdmp:document-insert](https://docs.marklogic.com/xdmp:document-insert)
##【参考】データソース

```bstore1.example.com/bib.xml
xdmp:document-insert("http://bstore1.example.com/bib.xml",
<bib>
    <book year="1994">
        <title>TCP/IP Illustrated</title>
        <author><last>Stevens</last><first>W.</first></author>
        <publisher>Addison-Wesley</publisher>
        <price>65.95</price>
    </book>
 
    <book year="1992">
        <title>Advanced Programming in the Unix environment</title>
        <author><last>Stevens</last><first>W.</first></author>
        <publisher>Addison-Wesley</publisher>
        <price>65.95</price>
    </book>
 
    <book year="2000">
        <title>Data on the Web</title>
        <author><last>Abiteboul</last><first>Serge</first></author>
        <author><last>Buneman</last><first>Peter</first></author>
        <author><last>Suciu</last><first>Dan</first></author>
        <publisher>Morgan Kaufmann Publishers</publisher>
        <price>39.95</price>
    </book>
 
    <book year="1999">
        <title>The Economics of Technology and Content for Digital TV</title>
        <editor>
               <last>Gerbarg</last><first>Darcy</first>
                <affiliation>CITI</affiliation>
        </editor>
            <publisher>Kluwer Academic Publishers</publisher>
        <price>129.95</price>
    </book>
 
</bib>);
```