标签: graphdb

从两个命名图插入?

我正在寻找一种简单的方法将两个或多个命名图(但不是整个未命名默认图)中的三元组插入到另一个命名图中。 我正在使用 GraphDB。

我想这可以通过在该部分中多次写出相同的查询WHERE,包装在多个 GRAPH规范中,然后将它们联合在一起来完成,但我的WHEREs 很长,我不想多次写出它们。

假设我加载了一些这样的数据:

INSERT DATA {
  GRAPH <http://example.com/ngA> {
    <http://example.com/person1> <http://example.com/name> "Arthur" .
  }
  GRAPH <http://example.com/ngB> {
    <http://example.com/person1> <http://example.com/name> "Brian" .
  }
  GRAPH <http://example.com/ngC> {
    <http://example.com/person1> <http://example.com/name> "Charlie" .
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以将特定模式的所有三元组从默认的未命名图形复制到新的命名图形中,如下所示:

INSERT {
  GRAPH <http://example.com/ngZ> {
    ?s <http://example.com/moniker> ?o .
  }
}
WHERE
  { ?s  <http://example.com/name>  ?o }
Run Code Online (Sandbox Code Playgroud)

SELECT从两个或多个(但不是全部)命名图中获取给定模式的三元组的一种简单方法是

SELECT  *
FROM <http://example.com/ngA>
FROM <http://example.com/ngB>
WHERE
  { ?s  <http://example.com/name>  ?o }
Run Code Online (Sandbox Code Playgroud)

如果我想将这些三元组从那些指定的图形复制到另一个图形中怎么办?

当我尝试执行以下操作时,我从 GraphDB 8.3(以及 sparql.org 验证器)收到错误

INSERT { …
Run Code Online (Sandbox Code Playgroud)

sparql graphdb named-graphs

6
推荐指数
2
解决办法
1234
查看次数

选择所有三元组,指示命名图(如果相关)

假设我在 GraphDB 8.3 Triplestore 中进行了以下插入:

PREFIX : <http://example.com/>
insert data { :hello a :word }
Run Code Online (Sandbox Code Playgroud)

PREFIX : <http://example.com/>
insert data { graph :farewells { :goodbye a :word }}
Run Code Online (Sandbox Code Playgroud)

现在,如果我问

select * where {
    graph ?g {
        ?s ?p ?o .
    } 
}
Run Code Online (Sandbox Code Playgroud)

我只得到

+--------------------------------+------------------------------+---------------------------------------------------+---------------------------+
|               ?g               |              ?s              |                        ?p                         |            ?o             |
+--------------------------------+------------------------------+---------------------------------------------------+---------------------------+
| <http://example.com/farewells> | <http://example.com/goodbye> | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> | <http://example.com/word> |
+--------------------------------+------------------------------+---------------------------------------------------+---------------------------+
Run Code Online (Sandbox Code Playgroud)

我显然可以通过以下内容获得“关于单词的三元组”,但随后不会显示命名图成员资格

select * { ?s ?p ?o }
Run Code Online (Sandbox Code Playgroud)

如何编写一个查询来检索有关单词的三元组并指示{ :goodbye a :word }来自图形的三元组 …

rdf sparql graphdb named-graphs

5
推荐指数
2
解决办法
5872
查看次数

将两个本体与"适配器"对齐

简化一点,我有一个以OWL表示的域本体(D),它描述了设备,它们的功能,配置.此外,对于每个供应商,我希望有特定于供应商的本体(V),它将连接到域1.问题是,如何对齐D和V?是否可以将V尽可能接近供应商术语,或者将D的类子类化为V(并且可能对数据属性和对象属性执行相同的操作)?这个想法是应用程序使用本体D进行查询和推理机制尽可能地隐藏供应商细节.

第一个变体似乎更合乎逻辑(毕竟,语义技术是关于互连),但我可以预见某些数据类型中的某些不匹配.例如,一个供应商可以按百分比表示电池电量,另一个供应商使用高,中,低等字.我不知道如何使用OWL将这些数据带到共同点.可能更难的情况,需要正则表达式应用程序和通常完成的任何脚本伏都教.(还有一个有趣的细节是直接使用dataproperties还是通过"包装"数据空间与对象属性和每个数据表的概念来添加一个间接层,以便为typemismath做更多的准备).

换句话说,似乎输入数据应该在进入RDF生态系统之前进行预处理......或者可能还有其他可能性?

(对于那些倾向于快速将问题标记为重复的人,我不是要求两个本体之间的映射,而是在OWL本身中安排"对齐"作为预处理与更丰富的"适配器模式")

sesame owl ontology owlim graphdb

4
推荐指数
1
解决办法
104
查看次数

使用 Jena 写入 Ontotext GraphDB

我正在尝试使用 Jena 写入本地免费的独立 GraphDB(8.5.0 版)存储库。

我试过的

(1) 从耶拿直接使用

我使用了这个 Jena 3.7.0 代码片段:

String strInsert =  
  "INSERT DATA {"
    + "<http://dbpedia.org/resource/Grace_Hopper> " 
    + "<http://dbpedia.org/ontology/birthDate>" 
    + " \"1906-12-9\"^^<http://www.w3.org/2001/XMLSchema#date> .}";

UpdateRequest updateRequest = UpdateFactory.create(strInsert);

UpdateProcessor updateProcessor = UpdateExecutionFactory.createRemote(updateRequest, 
  "http://localhost:7200/repositories/PersonData");

updateProcessor.execute();
Run Code Online (Sandbox Code Playgroud)

这导致以下异常

org.apache.jena.atlas.web.HttpException: 415 - 
at org.apache.jena.riot.web.HttpOp.exec(HttpOp.java:1091)
at org.apache.jena.riot.web.HttpOp.execHttpPost(HttpOp.java:718)
at org.apache.jena.riot.web.HttpOp.execHttpPost(HttpOp.java:501)
at org.apache.jena.riot.web.HttpOp.execHttpPost(HttpOp.java:459)
at org.apache.jena.sparql.modify.UpdateProcessRemote.execute(UpdateProcessRemote.java:81)
at org.graphdb.jena.tutorial.SimpleInsertQueryExample.main(SimpleInsertQueryExample.java:91)
Run Code Online (Sandbox Code Playgroud)

在 GraphDB 方面,我收到以下错误:

[INFO ] 2018-06-29 11:33:05,605 [repositories/PersonData | o.e.r.h.s.ProtocolExceptionResolver] Client sent bad request ( 415)
org.eclipse.rdf4j.http.server.ClientHTTPException: Unsupported MIME type: application/sparql-update
Run Code Online (Sandbox Code Playgroud)

(2) GraphDB 通过 Jena Fuseki

作为替代方案,我浏览了 …

jena graphdb

4
推荐指数
1
解决办法
489
查看次数

NetworkX 与 GraphDB:它们的用途相似吗?何时使用一种或另一种以及何时将它们一起使用?

我试图了解我是否应该为我的项目使用 GraphDB。我正在映射计算机网络并使用 NetworkX。这些关系是物理或逻辑邻接(L2 和 L3)。在当前的化身中,我的程序扫描网络并将邻接信息转储到 Postgress RDB 中。从那里我使用 Python 使用 NetworkX 构建我的图形。

我试图了解我是否应该改变我的方法,以及将信息存储在 GaphDB 中是否有任何好处。Postgress 有 AgensGraph,它似乎建立在 Postgress 之上,作为 GraphDB 覆盖或插件。我还不知道把它安装在上面是否会让我的生活更轻松。我几乎没有从 SQLite 迁移到 Postgress :-) 和 SQLAlchemy,所以现在不到 3 个月,我就在尽可能地重新考虑事情(迁移尚未完成)

我可以选择使用混合,但我不确定使用 GraphDB 是否有意义。据我了解,这些具有不需要模式的优点(这对像我这样的数据库新手有很大帮助)

我还想知道 NetworkX (Python librayr) 和 GraphDB 是否有任何重叠。据我了解,NetworkX 可以帮助分析图的拓扑结构,而 GraphDB 主要用于查询存储在数据库中的数据。它们有重叠吗?它们可以一起使用吗?

graph networkx graphdb

4
推荐指数
1
解决办法
2752
查看次数

Horst (pD*) 与 OWL2-RL 相比

我们使用GraphDB 8.4.0作为大型数据集成项目的三元组存储。我们想要利用推理能力,并尝试在使用 HORST (pD*) 和 OWL2-RL 之间做出决定。
然而,描述这些的文献相当密集。我我明白 OWL2-RL 更“强大”,但我不确定如何做到这一点。谁能提供一些例子来说明这两个推理机之间的差异?OWL2-RL 可以推断出哪些类型的语句,而 HORST 则不能(反之亦然)?

semantic-web owl graphdb

4
推荐指数
1
解决办法
571
查看次数

SPARQL加速联合查询

我有自己的数据集,我想在SPARQL中执行联合查询.这是查询:

PREFIX : <http://myURIsNamespace#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>

select * where { 
    ?bioentity :hasMutatedVersionOf ?gene .
    ?gene :partOf wd:Q430258 .

    SERVICE <https://query.wikidata.org/sparql> { 
        ?gene p:P644 ?statement; 
              wdt:P31 wd:Q7187 ;
              wdt:P703 wd:Q15978631 ;
              wdt:P1057 wd:Q430258 .
        ?statement ps:P644 ?start .
        ?statement pq:P659 wd:Q20966585 .

        ?gene p:P645 ?statement2. 
        ?statement2 ps:P645 ?end .
        ?statement2 pq:P659 wd:Q20966585 .
        FILTER (xsd:integer(?start)>21000000 && xsd:integer(?start)<30000000)  
    }

}
Run Code Online (Sandbox Code Playgroud)

我通过graphDB SPARQL接口运行查询,但它真的很慢.返回8条记录需要一分多钟.如果我将查询分为两部分,那么它们的速度非常快.

查询#1

select * where …
Run Code Online (Sandbox Code Playgroud)

query-optimization sparql wikidata graphdb federated-queries

3
推荐指数
1
解决办法
558
查看次数

清除命名图的最有效方法是什么?

我正在使用Ontotext GraphDB的一个实例,并且经常想要清除具有大量三元组的命名图.

目前,我的技术涉及向图形服务器发出SPARQL命令,该命令搜索并匹配命名图形中每个三元组的三重模式:

DELETE { GRAPH example:exampleGraph { ?s ?p ?o }} WHERE {?s ?p ?o .}
Run Code Online (Sandbox Code Playgroud)

当存在大量三元组时,这种方法通常需要相当长的时间来清除命名图.

我想知道是否有更有效的方法来做到这一点.即使是特定于三层商店的解决方案也是我可以接受的.

我还应该注意到我正在使用RDF4J库与图表进行通信.我知道某些解决方案可能适用于Ontotext Web界面,但我只对我可以以编程方式实现的解决方案感兴趣.

sparql graphdb rdf4j

3
推荐指数
1
解决办法
808
查看次数

如何正确配置GraphDb内存

我在研究项目中使用 GraphDb Free 8.6.1,我在具有 4GB 内存的 Linux 服务器上使用默认配置运行它。

但是,它已经开始抛出指向内存不足的异常:

Caused by: org.eclipse.rdf4j.repository.RepositoryException: Query evaluation error: Insufficient free Heap Memory 238Mb for group by and distinct, threshold:250Mb, reached 0Mb (HTTP status 500)
    at org.eclipse.rdf4j.http.client.SPARQLProtocolSession.execute(SPARQLProtocolSession.java:1143)
    at org.eclipse.rdf4j.http.client.SPARQLProtocolSession.executeOK(SPARQLProtocolSession.java:1066)
    at org.eclipse.rdf4j.http.client.SPARQLProtocolSession.sendTupleQueryViaHttp(SPARQLProtocolSession.java:834)
    at org.eclipse.rdf4j.http.client.SPARQLProtocolSession.getTupleQueryResult(SPARQLProtocolSession.java:763)
    at org.eclipse.rdf4j.http.client.SPARQLProtocolSession.sendTupleQuery(SPARQLProtocolSession.java:391)
    at org.eclipse.rdf4j.repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery.java:69)
Run Code Online (Sandbox Code Playgroud)

拜托,你能帮我找出问题所在吗?如何正确配置 GraphDB?

graphdb

3
推荐指数
1
解决办法
447
查看次数

Ontotext GraphDB 如何在 Visual Graph 中分配颜色?

我一直在尝试使用 Ontotext GraphDB 创建一些图形可视化。我希望我对相同数据制作的各种可视化效果之间的颜色保持一致。我知道颜色是根据类型而定的,但似乎并不一致。例如,如果我创建一个仅包含类型 节点的可视化图表A,分配给节点的颜色可能是红色,但是如果我创建一个包含类型A和 类型节点的可视化图表B,则分配给节点的颜色不会出现类型A保证仍然是红色的。

我想了解可视化系统根据类型分配颜色的机制。

作为旁注,我还遇到了较大网络的问题,其中图形的节点变得大于窗口的大小,因此即使我一直缩小,我也无法立即查看所有节点。

graphdb

3
推荐指数
1
解决办法
250
查看次数