首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBpedia: RDF和模型名

DBpedia: RDF和模型名
EN

Stack Overflow用户
提问于 2011-02-15 17:54:44
回答 1查看 2.2K关注 0票数 2

我在应用程序中使用dbpedia,在语义逻辑上使用Jena。

在耶拿,课程如下:

模型:一组语句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

如果我打电话:

代码语言:javascript
复制
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资源,我需要一个单独的模型,还是可以将所有语句合并到一个大模型中?

谢谢你的暗示!木兰

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-16 01:33:54

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

这里我展示了一个示例,它可以给出一些关于如何将您的三元组从DBPedia中分离出来以及在后端系统中存储它们的方法的一些想法。

从您的问题中,我假设您使用的是数据库后端,所以我的代码是针对Jena中的那种后端的。

代码语言:javascript
复制
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();
}

这个例子打印..。

代码语言:javascript
复制
[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]
(....)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5007444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档