java - 耶拿,DBpedia : RDF and model name

标签 java model rdf jena dbpedia

我在我的应用程序中使用 dbpedia,并使用 Jena 进行语义逻辑。

在耶拿,类(class)是:

模型:一组语句 http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/model/Model.html 资源:http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/model/Resource.html

在dbpedia中,资源的rdf代码是这样的: 例如http://dbpedia.org/resource/Frederick_of_Sweden 变成http://dbpedia.org/data/Frederick_of_Sweden.rdf

如果我打电话:

Model model = maker.createModel( "http://dbpedia.org/data/Frederick_of_Sweden.rdf")

已创建名为“http://dbpedia.org/data/Frederick_of_Sweden.rdf”的模型。 但我实际上需要将其称为“http://dbpedia.org/resource/Frederick_of_Sweden”,以与 rdf 语句保持一致。如何命名模型?

如果我想导航图表并到达其他节点,存储这些语句的最佳方式是什么?我是否需要为每个 dbpedia 资源建立一个单独的模型,或者我可以将所有语句合并到一个大模型中吗?

感谢您的任何提示! 穆龙

最佳答案

我认为创建模型的方式不会真正影响下载数据的方式。您可以使用您喜欢的 URI 标识符创建模型。

这里我展示了一个示例,它可以提供一些关于如何区分从 DBPedia 获取三元组的方式以及将它们存储在后端系统中的方式的想法。

根据您的问题,我假设您正在使用数据库后端,因此我的代码针对耶拿的此类后端。

import java.sql.SQLException;
import com.hp.hpl.jena.util.FileManager;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.SimpleSelector;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.db.DBConnection;
import com.hp.hpl.jena.rdf.model.ModelMaker;
import com.hp.hpl.jena.rdf.model.ModelFactory;

public class TestJena {

    public static void main(String[] args) throws java.lang.ClassNotFoundException, java.sql.SQLException {
        Class.forName("com.mysql.jdbc.Driver");            

        //The database backend initialization.
        DBConnection connection = new DBConnection(MY_DB, USER, PASS, "mysql");
        ModelMaker dbMaker = ModelFactory.createModelRDBMaker(connection);

        //A file manager to get the triples from the DBPedia revolvable URI. 
        FileManager fManager = FileManager.get();
        fManager.addLocatorURL();
        Model linkedDataModel =
              fManager.loadModel("http://dbpedia.org/data/Frederick_of_Sweden.rdf");


        //Now we copy the in-memory model into our DB backend. 
        //When the model is created you can give it the name that you like.
        Model dbModel = 
              dbMaker.createModel("http://dbpedia.org/resource/Frederick_of_Sweden");

        dbModel.add(linkedDataModel);

        StmtIterator iter = dbModel.listStatements();
        while (iter.hasNext()) {
            Statement stmt = iter.nextStatement();
            System.out.println(stmt);
        }


        linkedDataModel.close();
        dbModel.close();
        connection.close();
}

此示例打印...

[http://dbpedia.org/resource/Frederick_i_of_sweden, http://dbpedia.org/ontology/wikiPageRedirects, http://dbpedia.org/resource/Frederick_of_Sweden]
[http://dbpedia.org/resource/Frederick_I_%28of_Sweden%29, http://dbpedia.org/ontology/wikiPageRedirects, http://dbpedia.org/resource/Frederick_of_Sweden]
[http://dbpedia.org/resource/Frederick_I,_Landgrave_of_Hesse-Kassel, http://dbpedia.org/ontology/wikiPageRedirects, http://dbpedia.org/resource/Frederick_of_Sweden]
[http://dbpedia.org:8890/data/Frederick_of_Sweden.rdf, http://xmlns.com/foaf/0.1/primaryTopic, http://dbpedia.org/resource/Frederick_of_Sweden]
(....)

关于java - 耶拿,DBpedia : RDF and model name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5007444/

相关文章:

django - 从 pre_save 接收器函数引发 ValidationError?

laravel - 如何确定 Laravel 4.2 中模型是否使用软删除

rdf - 在RDF中自动添加具有增量值的记录

java - 如何在 Mapbox 中将折线叠加添加到静态图像?

java - Jersey:可以从 ResourceInfo 获取 getResourceClass() 实现的接口(interface)吗?

java - 自动完成 JComboBox (Java2S) 在更改事件上设置错误的值

javascript - Angular 无法让 ng-model 在嵌套指令中工作

python - 如何使用 rdflib(或纯 sparql)访问 rdf 列表的成员

java - 构建阿里巴巴java示例

Java 扫描器检查字符串还是整数