rdf - 为 2 个相关表创建 RDF 并对其运行 SPARQL 查询

标签 rdf sparql jena

以下是我的 2 个表格:

CREATE TABLE Tree (
    "id"            integer NOT NULL,   -- Primary key
    "tags"          varchar(500),
    "rootNode"      integer NOT NULL    -- Referes to Node table's "id"
);
CREATE TABLE Node (
    "id"            integer NOT NULL,   -- Primary key
    "parent"        integer NOT NULL,
    "owner"         varchar(500),
    "data"          varchar(500),
    "tags"          varchar(500)
);

我为此创建的通用 RDF 文件如下:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:wp="http://example.com/dm#">
    <wp:WPS rdf:about="http://example.com/">
    <wp:node><rdf:Description>  <wp:id>0</wp:id><wp:parent>-1</wp:parent><wp:owner>Kumar</wp:owner><wp:data>--#ABCDEFGHIJKLMNOPQRSTUVWXYZ#--</wp:data><wp:tags>MyTag</wp:tags></rdf:Description></wp:node>
    .....
    <wp:tree><rdf:Description>  <wp:treeId>814</wp:treeId><wp:treeTags>Banking</wp:treeTags><wp:rootNode>19989</wp:rootNode></rdf:Description></wp:tree>
    .......
</wp:WPS></rdf:RDF>

这是为这两个表创建组合 rdf 文件的正确方法吗?


现在我想运行类似于以下 SQL 查询的 SPQRQL 查询:

select w.id, w.tags, w.owner from Node w, Tree t where t.id=100;

我尝试使用 FILTER 使用以下查询,但无法获得所需的结果。正确的做法是什么?

    PREFIX wp: <http://example.com/dm#> 
              SELECT ?x ?id 
              WHERE { 
                ?x wp:id ?id .
                ?x wp:trailId ?trailId .
                ?x wp:rootWP ?rootWP .
                FILTER (?trailId = 100)
                FILTER (?rootWP = ?id)
              }

最佳答案

一般来说,您不应该自己创建数据库表结构来存储 RDF 三元组。要做到正确是一件复杂的事情,而要使其具有高性能则更加困难。如果您只想创建持久性三元组存储,请使用 RDF 平台的内置功能。对于耶拿,这将是 TDBSDB .

或者,如果您需要将数据存储在关系模式中,但您希望将该数据视为 RDF 三元组,以便可以使用 SPARQL 对其进行查询,那么您需要一个关系型 -到 RDF 映射工具。有standardisation work in this area ,以及开源实现,例如 D2RQ

关于rdf - 为 2 个相关表创建 RDF 并对其运行 SPARQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11131857/

相关文章:

ruby-on-rails - Ruby (on Rails) 支持 Web 服务组合和 OWLS?

python - 如何以可读的方式从 rdflib 打印术语文字?

python - Apache Jena 和 Python

java - 解析 .rdfs 文件

rdf - 本体中实体的排序

types - 语义网语言(RDF/Owl/等)中的 3d 矢量是否有事实上的标准数据类型?

rdf - 我在哪里可以下载 rdf/owl/nt 数据文件?

sparql - 查询获取某个实体类的数量属性

graph - 使用 SPARQL 计算自定义直方图指标以了解图结构

java - 如何从 DBPedia 获取类别层次结构?