Элементы вложенности Python rdflib

У меня есть существующий график rdf, который я хочу изменить. Я хочу добавить информацию в переменную n.

# source graph
g = source.graph

#new entry
n = (URIRef(obj.pid), URIRef('info:symplectic/symplectic-elements:def/model#hasPublicUrl'), URIRef('http://itemlocation.com'))

#add to graph
g.add(n)

#save back to source
source.graph = g

Вывод:

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
   xmlns:fedora-model="info:fedora/fedora-system:def/model#"
   xmlns:ns1="info:symplectic/symplectic-elements:def/model#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about="info:fedora/sympOE:mq5zf">
    <fedora-model:hasModel rdf:resource="info:fedora/emory-control:PublishedArticle-1.0"/>
  </rdf:Description>
  <rdf:Description rdf:about="sympOE:mq5zf">
    <ns1:hasPublicUrl rdf:resource="http://itemlocation.com"/>
  </rdf:Description>
</rdf:RDF>

Все почти правильно, но я хочу, чтобы все было по-другому:

  1. Я хочу, чтобы был только один раздел rdf: Description, содержащий обе записи.
  2. Я хочу, чтобы псевдоним ns1 был symp

Спасибо за помощь!


person Alex    schedule 16.09.2014    source источник


Ответы (1)


Я хочу, чтобы был только один раздел rdf: Description, содержащий обе записи.

Кажется, у вас здесь два URI info:fedora/sympOE:mq5zf и sympOE:mq5zf.

Попробуйте переписать новую строку ввода так:

uri = URIRef('info:fedora/' + obj.pid)
g.add(
  (uri, URIRef('info:symplectic/symplectic-elements:def/model#hasPublicUrl'), URIRef('http://itemlocation.com'))
)

Я хочу, чтобы псевдоним ns1 был symp

Вам нужно привязать пространство имен к графу. См. Примеры внизу этой страницы.

Это выглядело бы примерно так:

from rdflib import Namespace
ns = Namespace('http://localhost/symp#')
g.bind('symp', ns)
person Ted Lawless    schedule 16.09.2014