簡體   English   中英

耶拿(DBpedia):RDF和型號名稱

[英]Jena, DBpedia: RDF and model name

我在應用程序中使用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

如果我打電話給:

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資源使用單獨的模型,還是可以將所有語句合並為一個大模型?

感謝您的提示! Mulone

我認為您創建模型的方式不會真正影響下載數據的方式。 您可以使用所需的URI標識符創建模型。

在這里,我展示了一個示例,該示例可以給出一些想法,使您知道如何將三元組與DBPedia的分離方式以及將其存儲在后端系統中的方式分離。

根據您的問題,我假設您正在使用數據庫后端,因此我的代碼針對的是Jena中的此類后端。

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]
(....)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM