ビルトーソにはもろちん、バックアップ&リストア機能があります。
まずバックアップするには、
ビルトーソのコンダクターから、
System Admin -> Backup
にいきます。
Backup File Prefix
にバックアップファイル名の先頭につけたい文字を入力します。
とりあえず「unko」とでも入力しておきます。
(ただし後から変更できないので要注意です。)
Run Incremental Backup
ボタンをPUSHします。
すると、ビルトーソのdbディレクトリに、
xxxx1.bp
xxxx2.bp
というファイルができます。
これに全部のデータが入っています。
※dbディレクトリは人によって違うかもしれませんが、おそらくこのへんです。
/usr/local/var/lib/virtuoso/db
つづいて、リストアするには、
ビルトーソサーバを止めます。
dbディレクトリに移動します。
既存のdbファイルが存在しているとリカバリできないので、
どこかに移動しておきます。
# mv virtuoso-temp.db どこか
# mv virtuoso.db どこか
リストアコマンドを打ち込みます。
# virtuoso-t +restore-backup unko
※「unko」は上記で入力した「Backup File Prefix」です。
するとリカバリ処理が進みます。
イカのようにログが流れます。
Wed Jan 22 2014
11:58:59 { Loading plugin 1: Type `plain', file `wikiv' in `/usr/local/lib/virtuoso/hosting'
11:58:59 WikiV version 0.6 from OpenLink Software
11:58:59 Support functions for WikiV collaboration tool
11:58:59 SUCCESS plugin 1: loaded from /usr/local/lib/virtuoso/hosting/wikiv.so }
11:58:59 { Loading plugin 2: Type `plain', file `mediawiki' in `/usr/local/lib/virtuoso/hosting'
11:58:59 MediaWiki version 0.1 from OpenLink Software
11:58:59 Support functions for MediaWiki collaboration tool
11:58:59 SUCCESS plugin 2: loaded from /usr/local/lib/virtuoso/hosting/mediawiki.so }
11:58:59 { Loading plugin 3: Type `plain', file `creolewiki' in `/usr/local/lib/virtuoso/hosting'
11:58:59 CreoleWiki version 0.1 from OpenLink Software
11:58:59 Support functions for CreoleWiki collaboration tool
11:58:59 SUCCESS plugin 3: loaded from /usr/local/lib/virtuoso/hosting/creolewiki.so }
11:58:59 OpenLink Virtuoso Universal Server
11:58:59 Version 06.01.3127-pthreads for Linux as of Dec 25 2013
11:58:59 uses parts of OpenSSL, PCRE, Html Tidy
11:58:59 Begin to restore with file prefix unko
11:58:59 --> Backup file # 1 [0xC8D5-0x0B-0x25]
11:59:07 --> Backup file # 2 [0xC8D5-0x0B-0x25]
12:00:11 End of restoring from backup, 12516 pages
12:00:11 Server exiting
リカバリ処理が止まったら、ビルトーソを起動します。
# virtuoso-t -df &
すると、元通り!
詳しくはここに書いてます。
http://docs.openlinksw.com/virtuoso/backup.html
2014年1月22日水曜日
2014年1月20日月曜日
ビルトーソとリッジレーサーの関係
PSVITA版のリッジレーサーには、
なんと、
VIRTUOSOという曲が入っています。
まさかゲームをやっててVIRTUOSOのスペルを見るとは思いもよりませんでした。
ビルトーソの影響力はすごいですね!
なんと、
VIRTUOSOという曲が入っています。
まさかゲームをやっててVIRTUOSOのスペルを見るとは思いもよりませんでした。
ビルトーソの影響力はすごいですね!
2014年1月9日木曜日
トリプルとかクアッドとか
SPARQLの世界では、トリプルとかクアッドとか言います。
スパークルでは、データを3つセットでDBに格納しまして、主語、述語、目的語をセットにしてトリプルといいます。
トリプル=Subject,Predicate,Object
さらに、グラフという、トリプルのまとまりとなる要素を付け加えて、クアッドといいます。
クアッド=Graph,Subject,Predicate,Object
スパークルでは、データを3つセットでDBに格納しまして、主語、述語、目的語をセットにしてトリプルといいます。
トリプル=Subject,Predicate,Object
さらに、グラフという、トリプルのまとまりとなる要素を付け加えて、クアッドといいます。
クアッド=Graph,Subject,Predicate,Object
CRAWL_LINK_EXTRACT 関数
WS.WS.SITEMAP_BB_PARSE から呼び出される関数です。
リンクを抽出して、次のクロール対象となるようにキュー登録します。
完全オリジナルです。
create procedure
WS.WS.CRAWL_LINK_EXTRACT (
in _content varchar,
in _regexp varchar,
in _host varchar,
in _root varchar
)
{
dbg_obj_print('WS.WS.CRAWL_LINK_EXTRACT');
declare link
varchar;
link :=
regexp_match(_regexp,_content,1);
while(link is not
null) {
declare url varchar;
url := regexp_substr(_regexp,link,1);
if (left(url,2) = '//') {
url := null;
}
if (left(url,1) = '/') {
url := 'http://' || _host || url;
} else {
url := null;
}
if (regexp_match('https?://'||_host,url) is
null) {
url := null;
}
if (url is not null) {
insert soft VFS_QUEUE (VQ_HOST, VQ_TS,
VQ_URL, VQ_STAT, VQ_ROOT, VQ_OTHER) values (_host, now(), url, 'waiting',
_root, NULL);
dbg_obj_print(url);
}
link := regexp_match(_regexp,_content,1);
}
}
CRAWL_REGEXP_TO_QUAD関数
WS.WS.SITEMAP_BB_PARSE から呼び出される関数です。
正規表現で項目を取り出して、SPARQLのDBに保存します。
完全オリジナル関数です。
完全オリジナル関数です。
create procedure
WS.WS.CRAWL_REGEXP_TO_QUAD (
in _content varchar,
in _regexp varchar,
in _graph varchar,
in _subject varchar,
in _predicate varchar
)
{
dbg_obj_print('WS.WS.CRAWL_REGEXP_TO_QUAD');
--parse
DECLARE value
varchar;
value :=
regexp_substr(_regexp,_content,1);
dbg_obj_print(value);
--make sparql
declare sparql_str
varchar;
sparql_str :=
sprintf('sparql insert in graph <%s> { <%s> <%s>
"%s"}', _graph,_subject,_predicate,value);
--exec sparql
declare stat, msg
varchar;
declare mdata, rset
any;
exec (sparql_str,
stat, msg, vector(), 1, mdata, rset);
}
Extract Function で項目抽出!!
Extract Functionで項目抽出してみます。
WS.WS.CRAWL_REGEXP_TO_QUAD関数と、
WS.WS.CRAWL_LINK_EXTRACT関数の中身は、
別記事に書いてあります。
WS.WS.CRAWL_REGEXP_TO_QUAD関数と、
WS.WS.CRAWL_LINK_EXTRACT関数の中身は、
別記事に書いてあります。
create procedure
WS.WS.SITEMAP_BB_PARSE (
in _host varchar,
in _url varchar,
in _root varchar,
inout _content varchar,
in _c_type varchar := null,
in lev int := 0)
{
dbg_obj_print('sitemap_bb_parse
by hodade v3');
dbg_obj_print('_host='||_host);
dbg_obj_print('_url='||_url);
dbg_obj_print('_root='||_root);
dbg_obj_print('_c_type='||_c_type);
dbg_obj_print('lev='||lev);
declare graph
varchar;
graph
:= 'http://'||_host;
declare subject
varchar;
subject
:= _url;
--#################
-- ボキャブラリ設定
--#################
WS.WS.CRAWL_REGEXP_TO_QUAD(
_content,
'<title>(.+?)</title>',
graph,
subject,
'title'
);
WS.WS.CRAWL_REGEXP_TO_QUAD(
_content,
'<th
width="100">.+?</th><td>(.+?)</td>',
graph,
subject,
'address'
);
--##############
-- リンク抽出
--##############
WS.WS.CRAWL_LINK_EXTRACT(
_content,
'<a
.*?href="(.+?/spot/.*?)".*?>',
_host,
_root
);
commit work;
}
Store Function を設定すると・・・
ちなみに、
Store Function を設定すると、なぜか、
DAVへのコンテンツ保存が行われなくなります。
コンテンツ保存はその指定した Store Function の中でやれよと言うことなのでしょうか。
使わないことにします。
Store Function を設定すると、なぜか、
DAVへのコンテンツ保存が行われなくなります。
コンテンツ保存はその指定した Store Function の中でやれよと言うことなのでしょうか。
使わないことにします。
クロールに苦労する
クロール設定画面に下記の項目がありますが、
Store Function
Extract Function
ここにプログラムの場所を指定すると、
クロールしたコンテンツからデータの抽出を行うことができます。
プログラムは、Databaseに格納しておきましょう。
このようになっている場合、Extract Function には WS.WS.SITEMAP_BB_PARSE と書けばOKです。
Store Function
Extract Function
ここにプログラムの場所を指定すると、
クロールしたコンテンツからデータの抽出を行うことができます。
プログラムは、Databaseに格納しておきましょう。
このようになっている場合、Extract Function には WS.WS.SITEMAP_BB_PARSE と書けばOKです。
クロールしてみる
クロールするには、Content Imports の画面へ行きます。
主な設定項目はこんなかんじ。
Target URL
起点のURL
Copy to local DAV collection
クロールしたコンテンツの保存先、
Store documents locallyにチェックを入れるとここに保存される。
Number of HTTP redirects to follow
許可するリダイレクト回数
Crawling depth limit
クロール階層の深さ
Crawl delay(sec)
クロール間隔
Store Function
項目抽出プログラムを指定するところ
Extract Function
リンク抽出プログラムを指定するところ
Store documents locally
クロールしたコンテンツを保存するかどうか
これでクロールすると、
DAVの中にコンテンツがまるっと保存されます。
2014年1月8日水曜日
apacheと連携
ビルさんはアパッチけんと連携できます。
アパッチを通してビルさんにアクセスさせることができます。
アパッチ側でリバースプロキシの設定をするのです。(mod_proxy)
http://techwiki.openstructs.org/index.php/Proxying_Virtuoso_Via_Apache2
こうすると、アパッチでアクセス制限などをすることができます。
アパッチを通してビルさんにアクセスさせることができます。
アパッチ側でリバースプロキシの設定をするのです。(mod_proxy)
http://techwiki.openstructs.org/index.php/Proxying_Virtuoso_Via_Apache2
こうすると、アパッチでアクセス制限などをすることができます。
INSERT SOFT ?
Virtuosoには INSERT SOFT というSQLがあり、
主キーを持つ行がすでに存在する場合はインサートしません。
INSERT INTO だとエラーになるところです、あぶないあぶない。
主キーを持つ行がすでに存在する場合はインサートしません。
INSERT INTO だとエラーになるところです、あぶないあぶない。
Store FunctionとExtract Functionが実行される順番
管理画面上は、
Store Function
Extract Function
の順で、設定項目が上から並んでいますが、
実際の実行順序は、
1.Extract Function
2.Store Function
となっているので注意が必要です。
Store Function
Extract Function
の順で、設定項目が上から並んでいますが、
実際の実行順序は、
1.Extract Function
2.Store Function
となっているので注意が必要です。
Parse Function に渡される内容
Parse Functionには下記の引数が渡ってきます。
_host ホスト名
_url パス
_root 保存場所
_content コンテンツ内容
_c_type コンテントタイプ
lev 階層レベル
これらのデータを、ごにょごにょして、
DBに格納したりします。
_host ホスト名
_url パス
_root 保存場所
_content コンテンツ内容
_c_type コンテントタイプ
lev 階層レベル
これらのデータを、ごにょごにょして、
DBに格納したりします。
httpsのサイトをクロールできない?
ビルトーソには優秀なクロール機能が備わっています。
あるサイトを定期的にクロールさせてビルトーソ内のDBに保存することができます。
しかしながら、クロール対象サイトにhttps://で始まるURLを登録すると、次に見た瞬間、http://に変換されているのです。
これはビルさんが、https対応していないという意思表示なのでしょうか?
あるサイトを定期的にクロールさせてビルトーソ内のDBに保存することができます。
しかしながら、クロール対象サイトにhttps://で始まるURLを登録すると、次に見た瞬間、http://に変換されているのです。
これはビルさんが、https対応していないという意思表示なのでしょうか?
2014年1月6日月曜日
SPARQLサンプル
【全データ】
SELECT * WHERE { ?s ?p ?o }
【件数】
SELECT COUNT(*) WHERE { ?s ?p ?o }
【グラフ毎の件数】
SELECT ?g count(?g) WHERE {GRAPH ?g {?s ?p ?o}} GROUP BY ?g
【指定のsubjectがどのグラフに属するかGETする】
SELECT * WHERE { GRAPH ?g {<http://xxx.xxx.xxx/> ?p ?o }}
【あるグラフ配下のデータを表示】
SELECT * WHERE { GRAPH <http://xxx.xxx.xxx> {?s ?p ?o }}
SELECT * WHERE { ?s ?p ?o }
【件数】
SELECT COUNT(*) WHERE { ?s ?p ?o }
【グラフ毎の件数】
SELECT ?g count(?g) WHERE {GRAPH ?g {?s ?p ?o}} GROUP BY ?g
【指定のsubjectがどのグラフに属するかGETする】
SELECT * WHERE { GRAPH ?g {<http://xxx.xxx.xxx/> ?p ?o }}
【あるグラフ配下のデータを表示】
SELECT * WHERE { GRAPH <http://xxx.xxx.xxx> {?s ?p ?o }}
ビルトーソに役立つリンク集
スパークルエンドポイントからクロールするやりかた
http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtCrawlerSPARQLEndpoints
Extract FunctionとStore Functionの例
http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtSetCrawlerJobsGuideSemanticSitemapsFuncExample
コンダクターの使い方がずらっと載っているページ
http://docs.openlinksw.com/virtuoso/htmlconductorbar.html
virtuosoフォーラム
http://boards.openlinksw.com/support/viewforum.php?f=11&sid=b0206111471d072e209d1b143c4abbd5
Virtuosoのドキュメント
http://docs.openlinksw.com/virtuoso/
Virtuosoをソースからインストールする方法
http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VOSCentosNotes
http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtCrawlerSPARQLEndpoints
Extract FunctionとStore Functionの例
http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtSetCrawlerJobsGuideSemanticSitemapsFuncExample
コンダクターの使い方がずらっと載っているページ
http://docs.openlinksw.com/virtuoso/htmlconductorbar.html
virtuosoフォーラム
http://boards.openlinksw.com/support/viewforum.php?f=11&sid=b0206111471d072e209d1b143c4abbd5
Virtuosoのドキュメント
http://docs.openlinksw.com/virtuoso/
Virtuosoをソースからインストールする方法
http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VOSCentosNotes
更新系のSPARQLが実行できるようにするには
Interactive SQL (ISQL)から下記のSPARQLを実行しておきます。
grant execute on SPARQL_INSERT_DICT_CONTENT to "SPARQL";
grant execute on SPARQL_INSERT_DICT_CONTENT to "SPARQL_UPDATE";
grant execute on SPARQL_DELETE_DICT_CONTENT to "SPARQL";
Interactive SQL (ISQL)には、Conductorから行けます。
ヴィルさんの管理画面のことを、コンダクターと言うのです。
grant execute on SPARQL_INSERT_DICT_CONTENT to "SPARQL";
grant execute on SPARQL_INSERT_DICT_CONTENT to "SPARQL_UPDATE";
grant execute on SPARQL_DELETE_DICT_CONTENT to "SPARQL";
Interactive SQL (ISQL)には、Conductorから行けます。
ヴィルさんの管理画面のことを、コンダクターと言うのです。
proxy内部にビルトーソを設置した場合
virtuoso.ini
を変更する必要があります。
以下を変更 | |||||||||
HTTPProxyEnabled = 1 | |||||||||
以下を追加 | |||||||||
HTTPProxyServer = proxy.xxxxx.xxx.xxx:8080 | |||||||||
HTTPProxyExceptions = localhost:8890,127.0.0.1:8890 |
Virtuoso
それは
ビルトーソ
と読みます。
ビルさんは、SPARQLのDBだったり、WEBサーバになったり、クローラになったりできます。VirtuosoPLとか、VirtuosoServerPagesとかの独自言語も持ってます。
ビルさん一つでなんでもできそうです、すごい。
ビルトーソ
と読みます。
ビルさんは、SPARQLのDBだったり、WEBサーバになったり、クローラになったりできます。VirtuosoPLとか、VirtuosoServerPagesとかの独自言語も持ってます。
ビルさん一つでなんでもできそうです、すごい。
登録:
投稿 (Atom)