2016-07-15 2 views
0


最近、Java EEを使用した「古典的な」3層Webアプリケーションを開発しました。
私はGlassFishをアプリケーションサーバーとして使用しました。フロントエンド用のprimefacesコンポーネントを備えたDBMSおよびxhtmlページとしてMS SQL Serverを使用しました。triplestoreデータベースに基づくWebアプリケーションを開発する

ここでは、教育目的のために、私はリレーショナルデータベースを純粋なトリプストアデータベースに置き換えたいと思いますが、私はそれに従う手順がわかりません。

私はGoogleとこのサイトで多くの検索をしましたが、私が見つけたすべての回答が実際よりも理論的だったので、私が探していたものは見つかりませんでした。
可能であれば、私は一種のチュートリアルや実践的なヒントが必要です。 Apache Jenaに関するドキュメントを読んだが、確かな出発点を見つけることができない。
下記にあります:
- GlassFishでMS SQL Serverを使用するために、私はJDBCドライバを使用してデータソースと接続プールを作成しました。トリプルストアデータベースをセットアップするのと同等の手順がありますか?
- ユーザー認証を処理するために、私はレルムを使用しました。私は今どうすればいい?

現時点では、私はRDFスキーマを "手作業で"作成し、Jena Schemagenを使用してJavaクラスに変換しました。私は今どうすればいい?

+1

ようこそstackoverflowへようこそ。 [ツアー]をたどって、ここで聞くことができる質問と聞こえない質問を確認してください。あなたの質問はオフサイトのリソースを求めているので話題にはならず、それは広すぎます。 – Gimby

+0

私は歓迎のガイドを読んだことがあります。私は自分の意見が意見に基づいているわけではなく、実際の問題に関連しており、このサイトには解決策が存在しないと考えています。 – ronnie

+0

@ジンビーは丁寧です。あなたがしたことを示してください。何が欠けているかを示す。それがうまくいかないようにしようとしたことを示してください。欠けているビットを動作させる方法について具体的な質問をしてください。 –

答えて

1

ネットでいくつかの試みや他の調査をした結果、私は最終的に目標を達成しました。
私はJena TDBを使用して他のすべてのデータを保存しながら、ユーザーのログインとMS SQL ServerとJDBCRealm経由のナビゲーション許可を管理するハイブリッドソリューションを開発することに決めました。

RDFスキーマから、コードで簡単に文を作成するためのリソースとプロパティを含むJavaクラスを作成しました。ここでは例です:

<rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
    xmlns="http://www.stackoverflow.com/example#" 
    xml:base="http://www.stackoverflow.com/example"> 


    <rdfs:Class rdf:ID="User"></rdfs:Class> 

    <rdfs:Class rdf:ID="Project"></rdfs:Class> 

    <rdf:Property rdf:ID="email"></rdf:Property> 

    <rdf:Property rdf:ID="name"></rdf:Property> 

    <rdf:Property rdf:ID="surname"></rdf:Property> 

    <rdf:Property rdf:ID="description"></rdf:Property> 

    <rdf:Property rdf:ID="customer"></rdf:Property> 

    <rdf:Property rdf:ID="insertProject"> 
     <rdfs:domain rdf:resource="http://www.stackoverflow.com/example#User"/> 
     <rdfs:range rdf:resource="http://www.stackoverflow.com/example#Project"/> 
    </rdf:Property> 

</rdf:RDF> 

そして、これはJavaクラスです:

public class MY_ONTOLOGY { 

    private static final OntModel M = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM); 

    private static final String NS = "http://www.stackoverflow.com/example#"; 

    private static final String BASE_URI = "http://www.stackoverflow.com/example/"; 

    public static final OntClass USER = M.createClass(NS + "User"); 

    public static final OntClass PROJECT = M.createClass(NS + "Project"); 

    public static final OntProperty EMAIL = M.createOntProperty(NS + "hasEmail"); 

    public static final OntProperty NAME = M.createOntProperty(NS + "hasName"); 

    public static final OntProperty SURNAME = M.createOntProperty(NS + "hasSurname"); 

    public static final OntProperty DESCRIPTION = M.createOntProperty(NS + "hasDescription"); 

    public static final OntProperty CUSTOMER = M.createOntProperty(NS + "hasCustomer"); 

    public static final OntProperty INSERTS_PROJECT = M.createOntProperty(NS + "insertsProject"); 

    public static final String getBaseURI() { 
     return BASE_URI; 
    } 

} 

は、その後、私は私がC:\MyTDBdatasetのように、データを保存したい私のPC上のディレクトリを作成しました。私は私のTDB内の文を読みたい場合は、私はこのようなものを使用することができ、

String directory = "C:\\MyTDBdataset"; 
Dataset dataset = TDBFactory.createDataset(directory); 


dataset.begin(ReadWrite.WRITE); 
try { 
    Model m = dataset.getDefaultModel(); 
    Resource user = m.createResource(MY_ONTOLOGY.getBaseURI() + "Ronnie", MY_ONTOLOGY.USER); 
    user.addProperty(MY_ONTOLOGY.NAME, "Ronald"); 
    user.addProperty(MY_ONTOLOGY.SURNNAME, "Red"); 
    user.addProperty(MY_ONTOLOGY.EMAIL, "[email protected]"); 

    Resource project = m.createResource(MY_ONTOLOGY.getBaseURI() + "MyProject", MY_ONTOLOGY.PROJECT); 
    project.addProperty(MY_ONTOLOGY.DESCRIPTION, "This project is fantastic"); 
    project.addProperty(MY_ONTOLOGY.CUSTOMER, "Customer & Co"); 

    m.add(user, MY_ONTOLOGY.INSERTS_PROJECT, project); 
    dataset.commit(); 
} finally { 
    dataset.end(); 
} 

:あなたの場合は

dataset.begin(ReadWrite.READ); 

try { 
    Model m = dataset.getDefaultModel(); 
    StmtIterator iter = m.listStatements(); 


    while (iter.hasNext()) { 
     Statement stmt = iter.nextStatement(); 
     Resource subject = stmt.getSubject(); 
     Property predicate = stmt.getPredicate(); 
     RDFNode object = stmt.getObject(); 


     System.out.println(subject); 
     System.out.println("\t" + predicate); 
     System.out.println("\t\t" + object); 
     System.out.println(""); 
    } 
    m.write(System.out, "RDF/XML"); //IF YOU WANT TO SEE AT CONSOLE YOUR DATA AS RDF/XML 
} finally { 
    dataset.end(); 
} 


は、私は次のコードを使用し、その中にデータを保存するにはさまざまな方法でモデルをナビゲートしたい場合は、Apacheが提供するtutorialをご覧ください。
あなたは、モデル内の特定の文を削除したい場合は、あなたがこのような何か書くことができます。すべてです

dataset.begin(ReadWrite.WRITE); 
try { 
    Model m = dataset.getDefaultModel(); 
    m.remove(m.createResource("http://http://www.stackoverflow.com/example/Ronnie"), MY_ONTOLOGY.NAME, m.createLiteral("Ronald")); 
    dataset.commit(); 
} finally { 
    dataset.end(); 
} 

を!さようなら!

関連する問題