Добавление троек из списка в график с помощью фреймворка Python rdflib - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь добавить тройки в Graph с помощью пакета python rdflib. Отношения предоставляются в виде списка (определенный столбец в кадре данных)

sampleRelations = ['similarTo', 'brotherOf', 'capitalOf']
g = Graph()

# general relations
gen = Namespace('http://abcd.com/general#')
g.bind('gen',gen)

# Adding predefined relationships
g.add( (gen.relatedTo, RDFS.subClassOf, OWL.ObjectProperty) )

. Это работает как обычно. Но при переборе списка:

for rel in sampleRelations:
    g.add( ('gen.'+rel, RDFS.subClassOf, OWL.ObjectProperty) )  

Выдается ошибка: «Тема% s должна быть термином rdflib»% (s,).

relWithNamespace = gen+rel
print(relWithNamespace)
g.add( (relWithNamespace, RDFS.subClassOf, OWL.ObjectProperty) )

Ошибка

AssertionError: Subject http://abcd.com/general#similarTo must be an rdflib term

Я понимаю проблему. Я ищу указатели, которые могут обойти это.

1 Ответ

0 голосов
/ 07 ноября 2019

RDF-термины могут иметь BNode, URI-ссылку или литерал

    sampleRelations = ['similarTo', 'brotherOf', 'capitalOf'`]
    g = Graph()

    # general relations
    gen = Namespace('http://abcd.com/general#')
    g.bind('gen',gen)

    # Adding predefined relationships
    g.add( (gen.relatedTo, RDFS.subClassOf, OWL.ObjectProperty) )
    for rel in sampleRelations :
        rel = URIRef('http://abcd.com/general#' + rel)        
        g.add((rel, RDFS.subClassOf, OWL.ObjectProperty))

URI-ссылку также можно сделать с помощью:

for rel in sampleRelations :                
      g.add((gen.term(rel), RDFS.subClassOf, OWL.ObjectProperty))

или

for rel in sampleRelations :                
          g.add((gen[rel], RDFS.subClassOf, OWL.ObjectProperty))
...