0

我是本体领域的初学者。我有一个简单的问题,我在任何地方都找不到!我已经在 Protege 中制作了我的本体,我已经概念化了我感兴趣的领域(生产线中的能源消耗),现在我需要通过这个本体访问存储在我的数据库中的数据。我不想存储任何我的本体中的数据,但需要通过我的本体访问数据库中的数据。我完全不知道它的可能性,如果可能的话,我必须使用哪些工具来达到这个目的?例如,我应该用 Java 编写代码还是......提前非常感谢

4

1 回答 1

1

如果您有一个包含数据的数据库和一个表示这些数据概念化的本体,您可以通过为 D2RQ 编写映射来建立一个映射并公开这些数据,就好像它们是根据您的概念化表示的一样。

取自文档的示例:

    # D2RQ Namespace  
@prefix d2rq:        <http://www.wiwiss.fu-berlin.de/suhl/bizer/D2RQ/0.1#> .
# Namespace of the ontology
@prefix : <http://annotation.semanticweb.org/iswc/iswc.daml#> .

# Namespace of the mapping file; does not appear in mapped data
@prefix map: <file:///Users/d2r/example.ttl#> .

# Other namespaces
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . 

map:Database1 a d2rq:Database;
    d2rq:jdbcDSN "jdbc:mysql://localhost/iswc";
    d2rq:jdbcDriver "com.mysql.jdbc.Driver";
    d2rq:username "user";
    d2rq:password "password";
    .
# -----------------------------------------------
# CREATE TABLE Conferences (ConfID int, Name text, Location text);

map:Conference a d2rq:ClassMap;
    d2rq:dataStorage map:Database1;
    d2rq:class :Conference;
    d2rq:uriPattern "http://conferences.org/comp/confno@@Conferences.ConfID@@";
    .
map:eventTitle a d2rq:PropertyBridge;
    d2rq:belongsToClassMap map:Conference;
    d2rq:property :eventTitle;
    d2rq:column "Conferences.Name";
    d2rq:datatype xsd:string;
    .
map:location a d2rq:PropertyBridge;
    d2rq:belongsToClassMap map:Conference;
    d2rq:property :location;
    d2rq:column "Conferences.Location"; 
    d2rq:datatype xsd:string;
    .

示例页面

D2R 网站和文档

于 2013-10-05T20:19:06.303 回答