WEBデータマイニング(七)——Avertureデータ抽出(3):RDF格納エンジン


意味ネットワークに関する知識が既に分かっているなら、引き続きAppertureの枠組みに深く入り込んでデータ解析の仕組みを実現します.
Appertureフレームの内部はRDF 2 Goフレームに基づいてRDFモデルの記憶エンジンを実現します.RDFモデルはセマンティックネットワークの概念を含みます.簡単なXML形式のRDFファイルを見てみます.
<rdf:RDF

  xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'

  xmlns:vCard='http://www.w3.org/2001/vcard-rdf/3.0#'

   >



  <rdf:Description rdf:about="http://somewhere/JohnSmith/">

    <vCard:FN>John Smith</vCard:FN>

    <vCard:N rdf:parseType="Resource">

    <vCard:Family>Smith</vCard:Family>

    <vCard:Given>John</vCard:Given>

    </vCard:N>

  </rdf:Description>



  <rdf:Description rdf:about="http://somewhere/RebeccaSmith/">

    <vCard:FN>Becky Smith</vCard:FN>

    <vCard:N rdf:parseType="Resource">

    <vCard:Family>Smith</vCard:Family>

    <vCard:Given>Rebecca</vCard:Given>

    </vCard:N>

  </rdf:Description>



  <rdf:Description rdf:about="http://somewhere/SarahJones/">

    <vCard:FN>Sarah Jones</vCard:FN>

    <vCard:N rdf:parseType="Resource">

    <vCard:Family>Jones</vCard:Family>

    <vCard:Given>Sarah</vCard:Given>

    </vCard:N>

  </rdf:Description>



  <rdf:Description rdf:about="http://somewhere/MattJones/">

    <vCard:FN>Matt Jones</vCard:FN>

    <vCard:N

    vCard:Family="Jones"

    vCard:Given="Matthew"/>

  </rdf:Description>



</rdf:RDF>
RDFモデルについては、私たちは国語学習の中の陳述文を連想することができます.RDFファイルの中には多くの資源が含まれています.各リソースはまたいくつかの陳述文から構成されています.このリソースを記述するために使用されます.一つの陳述文は主語と述語と目的語からなり、主語は記述された対象であり、目的語は記述の属性であり、述語は関係であり、具体的な場面では異なる関係を表す.
RDFモデルは、論理的推理の形式化であると思います.論理学は基本的に同時に意味ネットを理解しています.西洋の哲学分野における本体の概念と実体の概念の間にはしばしば交差曖昧が存在しますが、意味ネットの意味上の本体についてはそれほど深く追究する必要はありません.
(補足:RDFモデルは、最初はメタデータ情報を記述するために用いられていたが、この方式はGSAのxmlfeed目的と方式と比較して類似していると感じる)
RDF 2 Goフレーム自体は、rdfモデル格納エンジンの具体的な実現を提供していません.それは、Javaライブラリの中のいくつかの仕様に類似した抽象層だけを提供しています.具体的な実現は第三者のコンポーネントに依存しています.RDF 2 Goフレームワークは、主に第三者のRDF格納エンジンに対するインターフェース変換機能を実現し、共通の処理方式に適合させる.
RDF 2 Go公式文書によると、RDF 2 Goフレームは現在以下のRDF格納エンジンをサポートしています.
Jena Adapter(rdf 2 go.impl.jena)
Implements the API and extens the impl.base clases.Delegates all calsto a  Jena 2.0.1 model.This adapper provides a Modelimplementation and、 new also a Model Set.
Anonymous Subversion (use) https:// for developer access)Download from  http://mavenrepo.fzi.de/semweb4j.org/repo/org/semweb4j/rdf2go.impl.jena/4.8.3/ Sttus:up-to date with RDF 2 Go 4.8.3 API Sesame Adapter(rdf 2 go.impl.sesame)
Implements the API and extens the impl.base clases.Delegates all calsto a  Sesame 2.7.1 repository.This adapper provides aModel and a Model Set implement.
Mavenレポート including links to JavaDocs、changeog、source code as HTML、JUnit test result、developer team、dependencies、list of open TODO tags in the code、…Releases (consider downloding the distribution instead)Anonymous Subversion (use) https:// for developer access)Sttus:up-to date with RDF 2 Go 4.8.3 API OWLIM(comp.ontotext.trree.rdf 2 go)
Implements API and uses a BigOWLIM SAIL as part of the  Semantic Spaces プロジェクト
これらのサードパーティのフレームは、具体的なRDFエンジンであり、本人はその中のApache Jenaに対して少しだけ詳しいですが、これはRDFメモリエンジンの理解に影響しません.私たちはRDF記憶エンジンをデータベースに類比することができます.RDFモデルに対しては修正検索などの機能を追加することができます.RDFモデルはどのように記憶し、どのようにインデックスし、どのようにクエリインターフェース(SPARQL)を実現するかはRDF記憶エンジンによって実現される機能です.
これらのサードパーティのRDF記憶エンジンのAPIは、ここでは実証されていません.本明細書ではRDF 2 Goフレームを利用してRDFモデルを開発する例を示しています.
読者がSemweb 4 jのフレームワークを理解すれば、開発は比較的容易になり、Semweb 4 jはオープンソースの意味検索エンジンのフレームワークであり、このシステム自体はRDF 2 GoフレームとRDF Reactorフレームに基づいている.
まず、eclipse開発ツールにおいて、mavenプロジェクトを構築します.(特にJarファイルに手を加えて依存する方式を採用したくないです.)ここでSemweb 4 jフレームの依存性を導入します.
<!--rdf2go-->

<dependency>

            <groupId>org.semweb4j</groupId>

            <artifactId>rdf2go.api</artifactId>

            <version>${project.version}</version>

        </dependency>



        <dependency>

            <groupId>org.semweb4j</groupId>

            <artifactId>rdf2go.impl.sesame</artifactId>

            <version>${project.version}</version>

        </dependency>



        <dependency>

            <groupId>org.semweb4j</groupId>

            <artifactId>rdf2go.impl.jena</artifactId>

            <version>${project.version}</version>

        </dependency>

       <!--rdfreactor-->

        <dependency>

            <groupId>org.semweb4j</groupId>

            <artifactId>rdfreactor.generator</artifactId>

            <version>${project.version}</version>

        </dependency>



        <dependency>

            <groupId>org.semweb4j</groupId>

            <artifactId>rdfreactor.runtime</artifactId>

            <version>${project.version}</version>

        </dependency>



        <dependency>

            <groupId>org.semweb4j</groupId>

            <artifactId>rdfreactor-maven-plugin</artifactId>

            <version>${project.version}</version>

        </dependency>
上記はRDF 2 Goフレームの明示的な導入とRDF Reactorフレームの相関依存性です.もちろん、より短い方法で依存性を導入することもできます.
<dependency>

            <groupId>org.semweb4j</groupId>

            <artifactId>dist</artifactId>

            <version>${project.version}</version>

            <type>pom</type>

        </dependency>
本人が採用したSemweb 4 jバージョンは4.8.3です.
/**

     * @param args

     */

    public static void main(String[] args) throws ModelRuntimeException{

        // TODO Auto-generated method stub

        // getting model factory

        ModelFactory modelFactory = RDF2Go.getModelFactory();       // getting model

        Model model = modelFactory.createModel();

        model.open();

        assert model.isOpen();



        // creating URIs

        String foafURI = "http://xmlns.com/foaf/0.1/";

        URI max = model.createURI("http://xam.de/foaf.rdf.xml#i");

        URI currentProject = model.createURI(foafURI + "#term_currentProject");

        URI name = model.createURI(foafURI + "#term_name");

        URI semweb4j = model.createURI("http://semweb4j.org");



        // adding a statement to the model

        model.addStatement(max, currentProject, semweb4j);

        model.addStatement(max, name, "Max Völkel");



        // dumping model to the screen

        model.dump();



        // removing a statement from the model

        model.removeStatement(max, currentProject, semweb4j);



        // dumping model to the screen

        model.dump();



    }
この種類のmainメソッドを実行して、コンソールの出力結果は以下の通りです.
Dumping Repository contents ----------------------------------------------

http://xam.de/foaf.rdf.xml#i - http://xmlns.com/foaf/0.1/#term_currentProject - http://semweb4j.org

http://xam.de/foaf.rdf.xml#i - http://xmlns.com/foaf/0.1/#term_name - Max Völkel

Dumping Repository contents ----------------------------------------------

http://xam.de/foaf.rdf.xml#i - http://xmlns.com/foaf/0.1/#term_name - Max Völkel
ここで、最初のRDFモデルの例示的なプログラムはすでに成功しました.もし本人が理解できないなら、同僚の皆様にご指摘をお願いします.
----------------------------------- 
本シリーズのWEBデータマイニングは本人オリジナルです.
作者 ブログです  ハリネズミの温馴さ 
本論文のリンクhttp://www.cnblogs.com/chenying99/archive/2013/06/12/3132406.html
本論文の著作権は作者の所有になります.作者の同意なしに、転載及び商業伝播を厳禁します.でないと、法律責任を追及します.