4

できるだけ小さくしたいのですが、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

その結果、次のようになります。

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", line 1045, in query
    query_object, initBindings, initNs, **kwargs))
  File "/usr/local/lib/python2.7/dist-packages/rdflib-4.0.1-py2.7.egg/rdflib/plugins/sparql/processor.py", line 72, in query
    parsetree = parseQuery(strOrQuery)
  File "/usr/local/lib/python2.7/dist-packages/rdflib-4.0.1-py2.7.egg/rdflib/plugins/sparql/parser.py", line 1034, in parseQuery
    return Query.parseString(q, parseAll=True)
  File "/usr/lib/python2.7/dist-packages/pyparsing.py", line 1032, in parseString
    raise exc
pyparsing.ParseException: Expected "}" (at char 24), (line:1, col:25)
4

1 に答える 1