标签: rdflib

如何查找rdf对象知道主题或其他方式?

我正在使用RDFLIB在带有ntriples的3个数据集(A,B,C)之间构建图形.

目标:图表包含那些数据集A-> B,B-> C和C-> A之间的链接,我想通过确保从A传出的链接引用回A中的相同条目来检查这些链接的一致性.

问题:一旦我迭代了A-> B中的链接,我想在B-> C中查找相应的条目(可能不止一个),而对于C-> A则相同,是否有办法通过了解主题而不迭代所有条目来查找对象?

python rdf rdflib

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

使用owl:带有rdflib和xml序列化的类前缀

我想owl:在我的RDF本体的XML序列化中使用前缀(使用rdflib版本4.1.1); 不幸的是,我仍然将序列化作为rdf:Description标记.我已经看过关于将命名空间绑定到RDFLib上的图形的答案:XML序列化中的命名空间前缀,但这似乎仅在使用ns格式而不是xml格式进行序列化时才起作用.

让我们更具体一点.我试图在XML中获得以下本体(如引入RDFS和OWL),如下所示:

<!-- OWL Class Definition - Plant Type -->
<owl:Class rdf:about="http://www.linkeddatatools.com/plants#planttype">

    <rdfs:label>The plant type</rdfs:label>
    <rdfs:comment>The class of all plant types.</rdfs:comment>

</owl:Class>
Run Code Online (Sandbox Code Playgroud)

这是用于构造这样的东西的python代码,使用rdflib:

from rdflib.namespace import OWL, RDF, RDFS
from rdflib import Graph, Literal, Namespace, URIRef

# Construct the linked data tools namespace
LDT   = Namespace("http://www.linkeddatatools.com/plants#")

# Create the graph
graph = Graph()

# Create the node to add to the Graph
Plant …
Run Code Online (Sandbox Code Playgroud)

python rdf owl xml-namespaces rdflib

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

在 Python 中可视化 RDFLIB 图形

我是 Python RDFLIB 的新手。我在这里找到了这个创建图表的例子。可视化此代码创建的图形的最简单方法是什么?

import rdflib
# Now we create a graph, a representaiton of the ontology
g = rdflib.Graph()

# Now define the key words that we will use (the edge weights of the graph)
has_border_with = rdflib.URIRef('http://www.example.org/has_border_with')
located_in = rdflib.URIRef('http://www.example.org/located_in')

# define the things - base level objects that will be the nodes
# In this case first we have countries
germany = rdflib.URIRef('http://www.example.org/country1')
france = rdflib.URIRef('http://www.example.org/country2')
china = rdflib.URIRef('http://www.example.org/country3')
mongolia = rdflib.URIRef('http://www.example.org/country4')

# then we have continents …
Run Code Online (Sandbox Code Playgroud)

python plot rdflib

3
推荐指数
2
解决办法
6111
查看次数

通过 RDFLib-SQLAlchemy 将 RDF 数据加载到 PostgreSQL 表

我有一个 NT 格式的大型 RDF 数据集(Geonames 数据集:18GB)。我想通过使用将其加载到 PostgreSQL 关系表中rdflib_sqlalchemy.SQLAlchemy。我知道这是可行的(对存储在关系数据库中的 rdf 数据执行 sparql 查询)。但是,我不确定如何。你能给我举个例子吗?

我的下一个目标是使用 RDFLib 从 python 编写 SPARQL 查询。我知道该怎么做。在此先感谢您的帮助。

postgresql sqlalchemy sparql rdflib flask-sqlalchemy

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

如何检查两个RDF图表是否具有相同的内容?

我正在编写一个C库,它将特定于域的数据解析并序列化为RDF/XML.解析文件并再次将其写回后,我希望能够检查内容是否未更改.

我可以再次解析所有内容,将其写为NTriples,并逐行比较两个Ntriples文件但是必须有更好的方法吗?

谢谢!

c rdf xml-serialization rdflib xml-parsing

2
推荐指数
1
解决办法
292
查看次数

来自RDF的文本和Python中的RDFlib

我有一个rdf文件,例如:

<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dbp="http://dbpedia.org/ontology/"
xmlns:dbprop="http://dbpedia.org/property/"
xmlns:foaf="http://xmlns.com/foaf/0.1/">
    <rdf:Description rdf:about="http://dbpedia.org/page/Johann_Sebastian_Bach">
      <dbp:birthDate>1685-03-21</dbp:birthDate>
      <dbp:deathDate>1750-07-28</dbp:deathDate>
      <dbp:birthPlace>Eisenach</dbp:birthPlace>
      <dbp:deathPlace>Leipzig</dbp:deathPlace>
      <dbprop:shortDescription>German composer and organist</dbprop:shortDescription>
      <foaf:name>Johann Sebastian Bach</foaf:name>
      <rdf:type rdf:resource="http://dbpedia.org/class/yago/GermanComposers"/>
      <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
    </rdf:Description>
</rdf:RDF> 
Run Code Online (Sandbox Code Playgroud)

而且我只想提取这个文件的文本部分,即在这种情况下我的输出是:

output_ tex = "Johann Sebastian Bach, German composer and organist,1685-03-21, 1750-07-28, Eisenach, Leipzig"
Run Code Online (Sandbox Code Playgroud)

如何使用RDFlib获得此结果?

python text rdf rdflib

2
推荐指数
1
解决办法
2873
查看次数

在 rdflib 中询问 SPARQL 查询

我正在尝试学习 SPARQL,并使用 python 的 rdflib 进行训练。我已经做了几次尝试,但任何 ASK 查询似乎总是给我返回 True 结果。例如,我尝试了以下方法:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import rdflib
mygraph=rdflib.Graph();
mygraph.parse('try.ttl',format='n3');
results=mygraph.query("""
ASK {?p1 a <http://false.com>}
 """)
print bool(results)
Run Code Online (Sandbox Code Playgroud)

即使“try.ttl”中没有 false.com 类型的主题,结果也是 true。谁能解释一下为什么?预先感谢您的帮助!

更新:阅读 rdflib 手册,我发现结果是列表类型,并且(在我的例子中)应该包含一个带有询问查询返回值的布尔值。我尝试了以下操作: for x in results: print x 我得到“无”。我猜我没有以正确的方式使用查询方法。

python sparql rdflib

2
推荐指数
1
解决办法
1175
查看次数

使用 RDFlib 向 GraphDB 插入数据时查询出错

我将数据库解析为 RDFlib 图。我现在想将该图中的三元组插入到 GraphDB 三元组存储中。当我在 Sesame 上托管的旧版本 GraphDB-Lite 上执行该代码时,该代码运行良好。但是,在现在独立的 GraphDB 7.0.0 上执行相同的查询时出现错误。在引发错误之前,该图已被部分解析,并且插入的三元组确实显示在三元组存储中。

这是代码的一部分:

graphdb_url = 'http://my.ip.address.here:7200/repositories/Test3/statements'
##Insert into Sesame
        for s,p,o in graph1:
            pprint.pprint ((s,p,o))
            queryStringUpload = 'INSERT DATA {%s %s %s}'  %(s,p,o)
            # queryStringUpload = 'DELETE WHERE {?s ?p ?o .}'
            # print queryStringUpload
            sparql = SPARQLWrapper(graphdb_url)
            sparql.method = 'POST'
            sparql.setQuery(queryStringUpload)
            sparql.query() 
Run Code Online (Sandbox Code Playgroud)

以下是错误:

ARQLWrapper.SPARQLExceptions.QueryBadFormed: QueryBadFormed: a bad request has been sent to the endpoint, probably the sparql query is bad formed. 

Response:
MALFORMED QUERY: Lexical error at line 1, …
Run Code Online (Sandbox Code Playgroud)

python rdflib linked-data graphdb

2
推荐指数
1
解决办法
1136
查看次数

rdflib - 查询持久性存储

我对链接数据和 rdflib 很陌生,我很迷失。我正在尝试使用 rdflib 使用“Sleepycat”创建持久性存储来加载 DBLP 数据库 rdf 文件,然后开始查询它。这就是我所做的:

import rdflib

graph = rdflib.Graph("Sleepycat")
graph.open("C:\Users\Maral\Desktop\Springer-DBLP\Mydblp", create=True)
graph.parse("C:\Users\Maral\Desktop\dblp.rdf", format = 'xml')
Run Code Online (Sandbox Code Playgroud)

花了将近2个小时,但现在看来dblp.rdf已被加载、解析并存储在Mydblp中。但len(graph)返回0,我不知道如何访问数据并查询它。

我是否缺少任何步骤?数据加载正确吗?所有示例都是关于向图中添加三元组,但我只想查询已经存在的内容。

谢谢。

python rdflib linked-data

2
推荐指数
1
解决办法
729
查看次数

使用存储在 Python 字典中的属性添加 RDF 三元组

我一直在与 DBpedia 合作进行 GSoC 项目。我必须使用存储在另一个文件中的属性创建三元组。

例如。我的主文件是main.py,包含所有规则的文件是rules.py.

这是我正在尝试/想要做的:

规则.py

mapping_rules = {
    'family': 'relatedTo',
    'singer': 'MusicalArtist',
    'writer': 'Author'
}
Run Code Online (Sandbox Code Playgroud)

主文件

import rules
import rdflib

dbo = rdflib.Namespace("http://dbpedia.org/ontology/")
dbr = rdflib.Namespace("http://dbpedia.org/resource/")

uri = "something"
res = "something"
p = mapping_rules[input()]
g.add((rdflib.URIRef(uri), dbo.p, rdflib.URIRef(res)))
Run Code Online (Sandbox Code Playgroud)

我希望动态决定三元组的属性。

如果我'dbo.relatedTo'在 中用作值mapping_rules.py,它会显示错误:Predicate dbo.related must be an rdflib term.

如果我使用dbo.relatedToas 值 in mapping_rules.py,它会抛出名称错误:dbo is not defined.

如果我使用relatedToinmapping_rules.py并使用上面的代码,它会添加一个三元组,但属性变为dbo:p,而我想要dbo:relatedTo.

我被困在这里,有人可以帮忙吗?谢谢!!

python rdf semantic-web rdflib dbpedia

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