Mais conteúdo relacionado
Semelhante a rdflintのvscode拡張の紹介とその実装方法 (20)
Mais de Takeshi Mikami (20)
rdflintのvscode拡張の紹介とその実装方法
- 1. takemikamiʼs note ‒ http://takemikami.com/
rdflintのvscode拡張の紹介とその実装⽅法
RDF language support via rdflint について
Copyright (C) Takeshi Mikami. All rights reserved. 1
三上 威 - @takemikami
アーリース情報技術株式会社 代表取締役 社⻑
VS Code Meetup #14 - 拡張機能作る、作った編
2021.8.30 @online
- 2. takemikamiʼs note ‒ http://takemikami.com/
はじめに
• テーマ
rdflintのvscode拡張の紹介とその実装⽅法
• 内容
• rdflintとvscode拡張の紹介
• rdflintのvscode拡張の実装⽅法
Copyright (C) Takeshi Mikami. All rights reserved. 2
本LTで紹介する内容を説明します
RDF language support via rdflint
https://marketplace.visualstudio.com/items?itemName=takemikami.vscode-rdflint
- 3. takemikamiʼs note ‒ http://takemikami.com/
⾃⼰紹介 業務と経歴
• 三上威 (@takemikami)
• データエンジニア・サイエンティスト
• 分析・予測モデル開発・基盤構築 etc
• 対象: マーケティングデータ etc
• 略歴
• 甲南⼤学理学部応⽤数学科 卒
• EC, CRM等のシステム構築 @ NEC系SIer
• ECサイトのマーケティングデータ分析 @ DeNA
• データ分析・予測モデル開発・基盤構築 @アーリース情報技術(株)
Copyright (C) Takeshi Mikami. All rights reserved. 3
発表者のプロフィールを紹介します
※フリーランスの法⼈成り
- 4. takemikamiʼs note ‒ http://takemikami.com/
⾃⼰紹介 開発プロダクト/技術同⼈誌
• 開発プロダクト @GitHub
• rdflint
• RDFデータのチェックツール
• https://github.com/imas/rdflint
• digdag-plugin-shresult
• ワークフローエンジン「Digdag」のプラグイン
• シェルスクリプトの標準出⼒を変数に格納するオペレータ
• https://github.com/takemikami/digdag-plugin-shresult
• 技術同⼈誌 @Booth/技術書典
• Apache Airflow ワークフロー プログラミング⼊⾨
• Apache Spark ビッグデータクエリチューニング
• Apache Hadoop & Spark ビッグデータプログラミング⼊⾨
Copyright (C) Takeshi Mikami. All rights reserved. 4
発表者が作成したプロダクト/執筆した同⼈誌を紹介します
https://takemikami.booth.pm/
- 5. takemikamiʼs note ‒ http://takemikami.com/
rdflintとvscode拡張の紹介
Copyright (C) Takeshi Mikami. All rights reserved. 5
- 6. takemikamiʼs note ‒ http://takemikami.com/
rdflintとは
• 次のチェックが⾃動化出来る
• XML/RDF、Turtle(ttl)ファイルの⽂法チェック
• 未定義の主語が、⽬的語として使われていないかのチェック
• SHACLによるデータ制約に違反していないかチェック
• GitHubでCIを⽤いたデータチェック運⽤にも利⽤可能
Copyright (C) Takeshi Mikami. All rights reserved. 6
rdflintについて説明します
RDFデータの⾃動検査ツール
リポジトリ → https://github.com/imas/rdflint
※RDF(Resource Description Framework): Linked Open Data を記述するための枠組み
- 7. takemikamiʼs note ‒ http://takemikami.com/
RDFデータの作成プロセス
• rdflintによるRDFデータの作成プロセスの違いを⽰す
Copyright (C) Takeshi Mikami. All rights reserved. 7
RDFデータの作成プロセス(rdflint有無)を説明します
XML
Turtle
fuseki
等 XML
Turtle
rdflint
ロード
データ作成 データ作成
クエリ実⾏
(SPARQL)
クエリ実⾏
(SPARQL)
ロード
⾃動検査
サーバ構築・データロードの⼿間と知識が必要 →確認作業が簡単できるチェックツールの整備
rdflintがある場合
rdflintが無い場合
- 8. takemikamiʼs note ‒ http://takemikami.com/
rdflintのvscode拡張 基本機能
• vscode拡張で、
データ作成の各作業を
vscode内で完結出来る。
• データの作成
• リロード指⽰
• ⾃動チェック実⾏
• クエリ実⾏
Copyright (C) Takeshi Mikami. All rights reserved. 8
rdflintのvscode拡張の基本機能を紹介します
データの作成
リロード指⽰
⾃動チェック実⾏
クエリ実⾏
- 9. takemikamiʼs note ‒ http://takemikami.com/
rdflintのvscode拡張 LanguageServer連携機能(Experimental)
• rdflintのLanguage Server機能で
指摘事項をvscodeに連携出来る。
• 右図では次を指摘
• リテラル末尾に空⽂字がある
• 年齢が負の値
Copyright (C) Takeshi Mikami. All rights reserved. 9
rdflintのvscode拡張のLanguageServer連携機能を⽰します
- 10. takemikamiʼs note ‒ http://takemikami.com/
rdflintのvscode拡張の実装⽅法
Copyright (C) Takeshi Mikami. All rights reserved. 10
- 11. takemikamiʼs note ‒ http://takemikami.com/
TerminalでREPLを動かす実装
• package.jsonにコマンドを定義
• extension.jsにコマンドの処理を実装
Copyright (C) Takeshi Mikami. All rights reserved. 11
TerminalでREPLを動かす場合の実装⽅法を⽰します
"commands": [
{
"command": "rdflint.interactiveMode",
"title": "rdflint interactiveMode: SPARQL playground"
}
],
// rdflint interactive mode startup command
let disposable = vscode.commands.registerCommand('rdflint.interactiveMode', () => {
※省略※
let terminal = vscode.window.createTerminal(`rdflint`, javaHome + javaExe, ['-jar', '' + jar, '-i']);
terminal.show(true);
※省略※
});
context.subscriptions.push(disposable);
Ctrl+Shift+Pメニューに追加
createTerminalでrdflint(Java)を実⾏
commandに処理を登録
- 12. takemikamiʼs note ‒ http://takemikami.com/
LanguageClientの利⽤部分実装 1/2
• package.jsonに対象⾔語を定義
• package.jsonに対象⾔語と拡張⼦の対応を定義
Copyright (C) Takeshi Mikami. All rights reserved. 12
LanguageClientの利⽤部分の実装⽅法を⽰します
"activationEvents": [
"onLanguage:turtle",
"onLanguage:rdfxml"
],
"languages": [
{
"id": "rdfxml",
"extensions": [
".rdf"
],
※省略※
},
※省略※
],
rdfxml, turtle形式の時に拡張を利⽤
- 13. takemikamiʼs note ‒ http://takemikami.com/
LanguageClientの利⽤部分実装 2/2
• extension.jsでLanguage Serverとクライアントを起動
Copyright (C) Takeshi Mikami. All rights reserved. 13
LanguageClientの利⽤部分の実装⽅法を⽰します
let serverOptions: Executable = {
command: javaHome + javaExe,
args: ['-jar', '' + jar, '-ls']
};
let clientOptions: LanguageClientOptions = {
documentSelector: [
{ scheme: 'file', language: 'turtle' },
{ scheme: 'file', language: 'rdfxml' }
]
};
client = new LanguageClient(
'rdflintLanguageServerExperimental',
'RdfLint Language Server',
serverOptions,
clientOptions
);
client.start();
rdfxml, turtle形式の時にLanguageClientを利⽤
LanguageServerの実⾏
(rdflintを-lsオプション付きで起動)
LanguageClientを開始
(同時にLanguageServerも実⾏される)
- 14. takemikamiʼs note ‒ http://takemikami.com/
まとめ
• RDFデータ作成プロセスに課題がある
• 確認作業(サーバを⽴ち上げて、データをロード)に⼿間と知識が必要
• RDFデータ作成プロセスの課題をrdflintで軽減した
• rdflintによって確認作業を簡単にできるようにした
• vscode拡張によって作成〜チェックをvscode内で完結できるようにした
• TerminalでREPLを動かすくらいのvscode拡張は簡単に作成できる
• ⼀連の作業をvscode内で完結させるには簡単な⼿段
Copyright (C) Takeshi Mikami. All rights reserved. 14
本LTのまとめです