Java 基于triplestore数据库开发web应用程序

Java 基于triplestore数据库开发web应用程序,java,rdf,jena,rdfs,triplestore,Java,Rdf,Jena,Rdfs,Triplestore,我最近使用Java EE开发了一个“经典”的三层web应用程序。 我使用GlassFish作为应用服务器,MS SQL server作为DBMS,使用带有primefaces组件的xhtml页面作为前端 现在,出于教育目的,我想用纯triplestore数据库替换关系数据库,但我不确定要遵循的过程 我在谷歌和这个网站上搜索了很多,但没有找到我想要的,因为我找到的每一个答案都是理论性的而不是实践性的。 如果可能的话,我需要一个教程或一些实用的技巧。 我已经阅读了有关ApacheJena的文档,但我


我最近使用Java EE开发了一个“经典”的三层web应用程序。
我使用GlassFish作为应用服务器,MS SQL server作为DBMS,使用带有primefaces组件的xhtml页面作为前端

现在,出于教育目的,我想用纯triplestore数据库替换关系数据库,但我不确定要遵循的过程

我在谷歌和这个网站上搜索了很多,但没有找到我想要的,因为我找到的每一个答案都是理论性的而不是实践性的。
如果可能的话,我需要一个教程或一些实用的技巧。 我已经阅读了有关ApacheJena的文档,但我找不到可靠的起点。
特别是:
-为了将MS SQL Server与GlassFish结合使用,我使用了JDBC驱动程序,创建了一个数据源和一个连接池。是否存在建立三重存储数据库的等效过程?
-为了处理用户身份验证,我使用了一个领域。我现在该怎么办


目前,我已经“手工”创建了一个RDF模式,并使用Jena Schemagen将其转换为Java类。我现在该怎么办?

在网上经过几次尝试和其他研究后,我终于实现了我的目标。
我决定开发一个混合解决方案,在这个解决方案中,我通过MS SQL Server和JDBCRealm管理用户登录和他们的导航许可,同时使用来保存所有其他数据。

从RDF模式开始,我创建了一个包含资源和属性的Java类,以便通过代码轻松创建语句。下面是一个例子:

然后我在我的电脑上创建了一个目录,我想在其中存储数据,比如
C:\MyTDBdataset

要在其中存储数据,我使用以下代码:

如果我想阅读TDB中的语句,我可以使用如下内容:

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提供的信息。
如果要删除模型中的特定语句,可以编写如下内容:


就这些!再见

欢迎来到stackoverflow。请花一点时间来了解您可以在这里问什么样的问题,不可以在这里问什么样的问题。你的问题是离题的,因为它要求非现场资源,而且太宽泛了。我已经阅读了《欢迎指南》,我认为我的问题不是基于意见的,它与实际问题有关,并且在这个网站上没有解决方案。@Gimby很有礼貌。展示你所做的;展示缺失的东西;展示你试图做的事情,但没有成功;问一个关于如何使缺失的钻头工作的具体问题。
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;
    }

}
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, "ronnie@myemail.com");  

    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();
}
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();
}