标签: rdflib

如何使用rdflib(或普通sparql)访问rdf列表的成员

访问rdf列表成员的最佳方法是什么?我正在使用rdflib(python),但在普通的SPARQL中给出的答案也可以(这种类型的答案可以通过rdfextras,一个rdflib帮助程序库使用).

我正在尝试访问由Zotero生成的rdf中的特定期刊文章的作者(为简洁起见,已删除了一些字段):

<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:z="http://www.zotero.org/namespaces/export#"
 xmlns:dcterms="http://purl.org/dc/terms/"
 xmlns:bib="http://purl.org/net/biblio#"
 xmlns:foaf="http://xmlns.com/foaf/0.1/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:prism="http://prismstandard.org/namespaces/1.2/basic/"
 xmlns:link="http://purl.org/rss/1.0/modules/link/">
    <bib:Article rdf:about="http://www.ncbi.nlm.nih.gov/pubmed/18273724">
        <z:itemType>journalArticle</z:itemType>
        <dcterms:isPartOf rdf:resource="urn:issn:0954-6634"/>
        <bib:authors>
            <rdf:Seq>
                <rdf:li>
                    <foaf:Person>
                        <foaf:surname>Lee</foaf:surname>
                        <foaf:givenname>Hyoun Seung</foaf:givenname>
                    </foaf:Person>
                </rdf:li>
                <rdf:li>
                    <foaf:Person>
                        <foaf:surname>Lee</foaf:surname>
                        <foaf:givenname>Jong Hee</foaf:givenname>
                    </foaf:Person>
                </rdf:li>
                <rdf:li>
                    <foaf:Person>
                        <foaf:surname>Ahn</foaf:surname>
                        <foaf:givenname>Gun Young</foaf:givenname>
                    </foaf:Person>
                </rdf:li>
                <rdf:li>
                    <foaf:Person>
                        <foaf:surname>Lee</foaf:surname>
                        <foaf:givenname>Dong Hun</foaf:givenname>
                    </foaf:Person>
                </rdf:li>
                <rdf:li>
                    <foaf:Person>
                        <foaf:surname>Shin</foaf:surname>
                        <foaf:givenname>Jung Won</foaf:givenname>
                    </foaf:Person>
                </rdf:li>
                <rdf:li>
                    <foaf:Person>
                        <foaf:surname>Kim</foaf:surname>
                        <foaf:givenname>Dong Hyun</foaf:givenname>
                    </foaf:Person>
                </rdf:li>
                <rdf:li>
                    <foaf:Person>
                        <foaf:surname>Chung</foaf:surname>
                        <foaf:givenname>Jin Ho</foaf:givenname>
                    </foaf:Person>
                </rdf:li>
            </rdf:Seq>
        </bib:authors>

        <dc:title>Fractional photothermolysis for the treatment of acne scars: a report of …
Run Code Online (Sandbox Code Playgroud)

python rdf sparql rdflib

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

Python:使用RDFLIB绘制Sesame数据库的图形

是否可以使用RDFLIB绘制Sesame RDF数据库的图形?这是我试过的:

endpoint = "http://127.0.0.1:8080/openrdf-workbench/repositories/movies/explore?resource=%3Cfile%3A%2F%2Fmovies_export.rdf%3E"

from rdflib import Graph
g = Graph()
g.parse(endpoint) 
Run Code Online (Sandbox Code Playgroud)

这是错误:

Traceback (most recent call last):
  File "C:\Software\rdflib\movieGraph.py", line 10, in <module>
    g.parse(endpoint)
  File "c:\python26_32bit\lib\site-packages\rdflib\graph.py", line 756, in parse

    parser = plugin.get(format, Parser)()
  File "c:\python26_32bit\lib\site-packages\rdflib\plugin.py", line 89, in get
    raise PluginException("No plugin registered for (%s, %s)" % (name, kind))
rdflib.plugin.PluginException: No plugin registered for (application/xml, <class
 'rdflib.parser.Parser'>)
Run Code Online (Sandbox Code Playgroud)

我认为唯一的技巧是指定一个正确的URL来使Sesame返回.rdf xml布局.

问题的作者:转发到http://answers.semanticweb.com/questions/9414/python-using-rdflib-to-graph-a-sesame-database(见那里的答案)

python sesame graph graph-databases rdflib

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

使用Python rdflib:如何在sparql查询中包括文字?

我可以在查询中包含URI和变量,但不能在查询中包含文字。

在这里,我有一些代码可以成功读取RDF文件,使用skos:prefLabels查找所有RDF三元组,对它们进行计数,然后从一组关键字中识别出几个特定的​​三元组:

import rdflib.plugins.sparql as sparql
import rdflib
import rdflib.graph as g

graph = g.Graph()
# Read the RDF file
graph.parse(
   'h:\......SKOSTaxonomy.rdf',
   format='xml')

# Build and execute the query
q = sparql.prepareQuery('SELECT ?s ?p ?o WHERE { ?s ?p ?o .}')
p = rdflib.URIRef("http://www.w3.org/2004/02/skos/core#prefLabel")
qres = graph.query(q, initBindings = {'p' : p})

print len(qres)

# Look for keywords among the results
keywords = set([u'Jackknifing', 'Technology-mapping', 'Something random'])

for (subj, pred, obj) in qres:
    if obj.value in keywords:
        print obj.value
Run Code Online (Sandbox Code Playgroud)

如预期的那样,此代码将输出: …

python sparql rdflib

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

使用Python和RDFLib将三元组添加到Virtuoso三元组中

我需要编写一个程序以将三元组添加到Virtuoso三元组中,我正在使用Python和RDFLib。我已经安装了Virtuoso插件并尝试了连接,如http://pythonhosted.org/virtuoso/rdflib.html#virtuoso-storage所示。我有:

from rdflib.graph import ConjunctiveGraph as Graph
from rdflib.store import Store
from rdflib.plugin import get as plugin
from rdflib.term import URIRef, Literal

Virtuoso = plugin("Virtuoso", Store)
store = Virtuoso("DSN=VOS;UID=dba;PWD=dba;WideAsUTF16=Y")
Run Code Online (Sandbox Code Playgroud)

看来没有问题,问题是:现在呢?如何添加新的三元组?我试过了:

default_graph_uri = "http://llisa.dlsi.uji.es/productset/"
graph = Graph(store,identifier = URIRef(default_graph_uri))
graph.add((URIRef("http://llisa.dlsi.uji.es/productset#0g9x91t"),URIRef("http://xmlns.com/foaf/0.1/nick"),Literal("The Car")))
store.commit()
print graph.serialize(format='pretty-xml')
Run Code Online (Sandbox Code Playgroud)

产生以下错误:

File "/usr/local/lib/python2.7/dist-packages/virtuoso-0.12-py2.7.egg/virtuoso/vstore.py", line 345, in resolve
(value, dvtype, dttype, flag, lang, dtype) = args
ValueError: need more than 4 values to unpack
Run Code Online (Sandbox Code Playgroud)

问题是这有什么问题?以及如何正确添加三元组?谢谢。

python rdflib virtuoso

5
推荐指数
0
解决办法
1050
查看次数

错误:无效命令'build_sphinx'

如何在mac osx 10.10.1 python 2.7.9中安装rdflib的文档?我按照说明书中所概述1,我得到错误:无效的命令"build_sphinx"文档不安装.库rdflib运行良好,我已经测试过了.此外,狮身人面像工作正常 - 也进行了测试,其中sphinx-quickstart.

python rdflib python-sphinx

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

强制 rdflib 定义命名空间

我开始使用该rdflib库在 Python 中处理 rdf 数据。目前,我想创建一个.n3rdf 图的文件,如下所示:

@prefix ns1: <http://some.namespace/with/name#> .
@prefix ns2: <http://second.namespace/some/name#>
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<my_example> ns1:annotated_with [ ns1:annotation
        ns2: annotation_value> ] ;
    ns1:name "myname" .
Run Code Online (Sandbox Code Playgroud)

也就是说,该图中有一个名为 的示例my_example,其名称为“myname”。此示例使用注释值为 的对象进行注释annotation value。我想用 Python 构建这个示例,如下所示:

import rdflib

gg=rdflib.graph.Graph()
ns1 = rdflib.Namespace('http://some.namespace/with/name#')
ns2 = rdflib.Namespace('http://second.namespace/some/name#')
u = rdflib.term.URIRef('my_example')
gg.add((u, ns1.name, rdflib.Literal('myname')))
blank = rdflib.BNode()
gg.add((u, ns1.annotated_with, blank))
gg.add((blank, ns1.annotation, ns2.annotation_value))

print gg.serialize(format='n3') …
Run Code Online (Sandbox Code Playgroud)

python rdf rdflib

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

使用前缀显示 rdflib 图中的实体

我正在使用 rdflib 将 RDF 图加载到 Python 脚本中 我想使用定义的前缀打印主题列表 我没有找到任何应​​用前缀的方法。我的代码

import rdflib
filepath = "... my file path ..."
gs = rdflib.Graph()
gs.bind('qs', "http://qs.org/")
gs.bind('foaf',"http://xmlns.com/foaf/0.1/")
gs.parse(filepath,format="nt")
mdstr = ""
for subject in gs.subjects():
    mdstr += str(subject) +"\n"
print(mdstr)
Run Code Online (Sandbox Code Playgroud)

例如,我得到 http://qs.org/s12095 代替 qs:s12095

python prefix rdflib

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

RDFLib:XML序列化中的命名空间前缀

在使用RDFLib 3.0的Python脚本中,在序列化三元组时,我得到以下XML-Output:

<rdf:RDF
  xmlns:_3="http://www.my-example.intra/ontologies/ci.owl#"
>
Run Code Online (Sandbox Code Playgroud)

如何为RDFLib(或者分别是XML-Serializer)自动分配的匿名_x-前缀定义特定的名称空间前缀?

<rdf:RDF
  xmlns:ex="http://www.my-example.intra/ontologies/ci.owl#"
>
Run Code Online (Sandbox Code Playgroud)

非常感谢您的回复!

python namespaces rdflib

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

使用SPARQLWrapper进行INSERT/DELETE/UPDATE查询

虽然我在网上经历了很多例子,解释了如何使用python SPARQLWrapper使用SELECT语句从sesame triple store中获取数据,但不知道如何使用它来在芝麻中INSERT/DELETE/UPDATE语句.你们中的任何人都可以在这方面提供指导.

谢谢

python sparql rdflib

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

是否有一个带有RDFLib的SPARQL的Hello World示例?

我希望尽可能小,但仍然是自我一致的,并且使用RDFLib中的SPARQL.我有RDFLib版本'4.0.1'.

我想有一个代码执行以下操作

  1. 导入RDFLib.
  2. 创建一个简单的图形(从2到4关系)
  3. 将此图形写入rdf格式的文件中.
  4. 从文件中读取图形.
  5. 使用SPARQL从图中提取内容.

添加

我自己尝试(首先没有写入和读取文件),我无法做到.这就是我所拥有的:

import rdflib

g = rdflib.ConjunctiveGraph()

has_border_with = rdflib.URIRef('www.example.org/has_border_with')
located_in = rdflib.URIRef('www.example.org/located_in')

germany = rdflib.URIRef('www.example.org/country1')
france = rdflib.URIRef('www.example.org/country2')
china = rdflib.URIRef('www.example.org/country3')
mongolia = rdflib.URIRef('www.example.org/country4')

europa = rdflib.URIRef('www.example.org/part1')
asia = rdflib.URIRef('www.example.org/part2')

g.add((germany,has_border_with,france))
g.add((china,has_border_with,mongolia))
g.add((germany,located_in,europa))
g.add((france,located_in,europa))
g.add((china,located_in,asia))
g.add((mongolia,located_in,asia))

x = g.query("""select ?country where { ?country www.example.org/located_in www.example.org/part1 }""")
print x
Run Code Online (Sandbox Code Playgroud)

结果我得到:

Traceback (most recent call last):
  File "hello_world.py", line 23, in <module>
    x = g.query("""select ?country where { ?country www.example.org/located_in www.example.org/part1 }""")
  File "/usr/local/lib/python2.7/dist-packages/rdflib-4.0.1-py2.7.egg/rdflib/graph.py", …
Run Code Online (Sandbox Code Playgroud)

python sparql rdflib

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