Advertisement
Advertisement

More Related Content

Advertisement

Silkについて

  1. リンク生成ツール -Silk- 2012/07/24 Linked Data勉強会 南 佳孝
  2. Silkとは • 2つの異なるデータソースの データ項目間のリンクを生成するツール – リンクするデータ項目の条件を設定できる – SPARQL endpointsを利用できる – 利用形態 Hadoopベース • Single Machine • MapReduce APIを提供 • Server Web上でテスト • Workbench
  3. Silkの使い方 • インストール – http://www4.wiwiss.fu-berlin.de/bizer/silk/ – ↑からダウンロードして解凍するだけ • 設定ファイルの作成 – XMLファイル – リンクするデータ項目の条件を設定 – Silk Link Specification Language (Silk-LSL)で記述 • 実行 – java -DconfigFile=test.xml -jar C:hogehogesilk.jar
  4. 設定できる条件 • Prefix – NamespaceのPrefixを設定 • DataSources – データソースを指定 • sparql endpointのURLを設定 • LinkType – マッチしたデータをリンクするプロパティを設定 • 比較条件 – sparqlクエリで比較対象のデータを設定 – 比較方法を設定 • Output – 出力するファイル名とフォーマット
  5. PrefixとDataSources <Prefixes> <Prefix id="rdfs" namespace="http://www.w3.org/2000/01/rdf-schema#" /> <Prefix id="species" namespace="http://lod.ac/ns/species#" /> <Prefix id="owl" namespace="http://www.w3.org/2002/07/owl#" /> </Prefixes> fileと指定することも可 その場合は、formatの指定が必要 ※RDF/XML、N-TRIPLE、TURTLE、TTL、N3 <DataSources> <DataSource id="lodac" type="sparqlEndpoint"> <Param name="endpointURI" value="http://lod.ac/sparql" /> </DataSource> <DataSource id="species" type="sparqlEndpoint"> <Param name="endpointURI" value="http://lod.ac/species/sparql" /> </DataSource> </DataSources> その他に、login、password、instanceList、 PageSize、graph、pauseTime、retryCount、 RetryPauseを指定可
  6. LinkTypeとデータセット <LinkType>owl:sameAs</LinkType> <SourceDataset dataSource="lodac" var="a"> <RestrictTo> ?a rdf:type foaf:Organization SPARQLで記述 </RestrictTo> </SourceDataset> <TargetDataset dataSource="species" var="b"> <RestrictTo> ?b species:museumName ?o </RestrictTo> </TargetDataset>
  7. LinkageRule 比較方法とそのパラメータを指定 <LinkageRule> <Aggregate type="average"> <Compare metric="levenshteinDistance" threshold="2.0"> <Input path="?a/rdfs:label[@lang='ja']" /> <Input path="?b/species:museumName" /> </Compare> </Aggregate> </LinkageRule> 比較対象をPath形式で記述
  8. 比較方法 • 文字列ベースで距離比較 • パラメータ – levenshteinDistance – required (optional) • 置換や挿入の回数 • 両方のインスタンスがあ – levenshtein る場合のみ • 正規化され、0~1の間 – weight (optional) – jaro – threshold • 人名に特化した手法 • 文字列間の距離(-1~1) – jaroWinkler – distanceMeasure – equality • jaccard、dice、 softjaccard、num、date、 • イコールなら0 dateTime、wgs84 – Inequality – Inputs • イコールなら1 • 比較対象を設定
  9. パスの記述方法 • SPARQLで取得した値からパスを指定する –/ • プロパティ経由で次の値を取得 – 例)博物館→名称 – • プロパティ経由で前の値を取得 – 例)蝶が収蔵されている博物館 – [] • 言語タグなどのフィルター • TransformInput で変換も可能
  10. Outputs デフォルトは下記に出力 ユーザディレクトリ/.silk/outoput <Outputs> <Output type="file" minConfidence="0.95"> <Param name="file" value="accepted_links.nt" /> <Param name=“format” value=“ntriples” /> </Output> <Output type="file" maxConfidence="0.95"> <Param name="file" value="verify_links.nt" /> ntriplesかalignmentを指定 <Param name="format" value="alignment" /> </Output> </Outputs>
  11. テストケース • 対象データ – LODACの博物館情報(20万件) – LODACの生物情報 • 標本が収蔵されている博物館(120万件) • 処理数とかかった時間 – 20万かける120万=2400億回 – 11時間
  12. 処理スピードについて • 処理するサーバ次第 – 対象の件数が多いと幾何級数的に遅くなる場 合がある • OFFSETなどに時間がかかることが原因 例えば、こんなクエリを投げてい る SELECT DISTINCT ?a ?o WHERE { ?a <http://lod.ac/ns/species#scientificName> ?o . } OFFSET 54000 LIMIT 1000
Advertisement