本文整理匯總了Python中rdflib.Graph.ConjunctiveGraph.add方法的典型用法代碼示例。如果您正苦於以下問題:Python ConjunctiveGraph.add方法的具體用法?Python ConjunctiveGraph.add怎麽用?Python ConjunctiveGraph.add使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類rdflib.Graph.ConjunctiveGraph
的用法示例。
在下文中一共展示了ConjunctiveGraph.add方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: __convert_to_triples
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
def __convert_to_triples(self, model):
"""Converts each model/query result into its own graph to be
merged the graph returned by to_rdf()."""
sylph = self.NAMESPACES["sylph"]
graph = Graph()
graphNum = len(self.subgraphs)
node = URIRef(model.uri) # The Resource
graph.add((node, RDF.type, sylph[model.get_rdf_class()])) # Datatype
data = model.get_transportable()
# Performs graph.add(sub, pred, obj)
for k, v in data.iteritems():
obj = None
if k == "uri":
continue # already done
# Blank values transported because we may be 'erasing' them
if not v:
if type(v) in [str, unicode]:
obj = Literal("")
if type(v) is NoneType:
obj = sylph["None"]
if isinstance(v, (models.Model, Resource, ResourceTree)):
# TODO/XXX: This is slow as hell. Hits the database every
# single time this codepath is reached.
# For now, forget performance. Work on this later...
obj = URIRef(v.uri) # XXX: Wouldn't this work with just hasattr?
if not obj:
obj = Literal(v) # Handles int, float, etc.
graph.add((node, sylph[k], obj))
self.subgraphs.append(graph)
示例2: commitData
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
def commitData(triples):
"""
Commits triples to RDF store
"""
report("INFO: rdflibWrapper.commitData")
# default_graph_uri = "http://rdflib.net/rdfstore"
graph = Graph(store) # Other optional argument: identifier = rdflib.URIRef(default_graph_uri)
triples = list(set(triples)) # Deduplication of triples
report("INFO: adding %d triples" % (len(triples)))
for triple in triples:
report("S:%s, P:%s, O:%s" % (str(triple[0]), str(triple[1]), str(triple[2])))
map(lambda triple: graph.add(triple), triples) # Add triples to the graph
graph.commit() # Commit newly added triples
示例3: toRDF
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
def toRDF(self):
"""
Print a message into RDF in XML format
"""
#rdf graph
store = ConjunctiveGraph()
#namespaces
store.bind('sioc', SIOC)
store.bind('foaf', FOAF)
store.bind('rdfs', RDFS)
store.bind('dc', DC)
store.bind('dct', DCT)
#message node
message = URIRef(self.getUri())
store.add((message, RDF.type, SIOC["Post"]))
#document node
doc = URIRef(self.getUri()+'.rdf')
store.add((doc, RDF.type, FOAF["Document"]))
store.add((doc, FOAF["primaryTopic"], message))
try:
store.add((message, SIOC['id'], Literal(self.getSwamlId())))
store.add((message, SIOC['link'], URIRef(self.getXhtmlUrl())))
store.add((message, SIOC['has_container'],URIRef(self.config.get('base')+'forum')))
store.add((message, SIOC["has_creator"], URIRef(self.getSender().getUri())))
store.add((message, DC['title'], Literal(self.getSubject())))
store.add((message, DCT['created'], Literal(self.getDate(), datatype=XSD[u'dateTime'])))
parent = self.getParent()
if (parent != None):
store.add((message, SIOC['reply_of'], URIRef(parent)))
if (len(self.childs) > 0):
for child in self.childs:
store.add((message, SIOC['has_reply'], URIRef(child)))
previous = self.getPreviousByDate()
if (previous != None):
store.add((message, SIOC['previous_by_date'], URIRef(previous)))
next = self.getNextByDate()
if (next != None):
store.add((message, SIOC['next_by_date'], URIRef(next)))
store.add((message, SIOC['content'], Literal(self.getBody())))
except Exception, detail:
print 'Error proccesing message ' + str(self.getId()) + ': ' + str(detail)
示例4: RdfDataExporter
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
class RdfDataExporter(object):
def __init__(self):
self.g = ConjunctiveGraph()
def export(self, mainSubject, params, tuples):
if params.has_key('subpredicate'):
databag = mainSubject+"/"+str(uuid.uuid4())
self.g.add((mainSubject, params['predicate'], databag))
self.g.add((databag, 'rdf:type', params['databag_class']))
for t in tuples:
#print t
if t.has_key('subject'):
subject = t['subject']
else:
subject = mainSubject+"/"+str(uuid.uuid4())
self.g.add((subject, 'rdf:type', params['datarow_class']))
if not params.has_key('subpredicate'):
if params['predicate'] != 'None':
self.g.add((mainSubject, params['predicate'], subject))
else:
self.g.add((databag, params['subpredicate'], subject))
for predicate in t:
if predicate != 'subject':
self.g.add((subject, predicate, t[predicate]))
def addTriple(self, s, p, o):
self.g.add((s, p, o))
def printTriples(self):
for a in self.g.__iter__():
print a
示例5: build
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
def build(self, person):
FOAF = Namespace("http://xmlns.com/foaf/0.1/")
MYTERMS = Namespace("http://peoples.org/terms/")
graph = ConjunctiveGraph()
user = BNode('user')
graph.add((user, MYTERMS['vkontakteID'], Literal(person.id)))
graph.add((user, RDF.type, FOAF['Person']))
graph.add((user, FOAF['firstName'], Literal(person.name)))
graph.add((user, FOAF['surname'], Literal(person.sname)))
attr = [item for item in dir(person) if not callable(item)]
if 'icq' in attr:
graph.add((user, FOAF['icqChatID'], Literal(person.icq)))
if 'nickname' in attr:
graph.add((user, FOAF['nick'], Literal(person.nickname)))
if 'town' in attr:
graph.add((user, MYTERMS['town'], Literal(person.town)))
if 'gender' in attr:
graph.add((user, FOAF['gender'], Literal(person.gender)))
if 'status' in attr:
graph.add((user, MYTERMS['marital'], Literal(person.status)))
if 'religion' in attr:
graph.add((user, MYTERMS['religion'], Literal(person.religion)))
if 'politic' in attr:
graph.add((user, MYTERMS['politic'], Literal(person.politic)))
if 'bday' or 'bmonth' or 'byear' in attr:
birthday = BNode('birthday')
graph.add((user, FOAF['birthday'], birthday))
if 'bday' in attr:
graph.add((birthday, MYTERMS['bday'], Literal(person.bday)))
if 'bmonth' in attr:
graph.add((birthday, MYTERMS['bmonth'], Literal(person.bmonth)))
if 'byear' in attr:
graph.add((birthday, MYTERMS['byear'], Literal(person.byear)))
if 'university' in attr:
university = BNode('university')
graph.add((user, MYTERMS['university'], university))
graph.add((university, MYTERMS['university_name'], Literal( \
person.university)))
if 'faculty' in attr:
graph.add((university, MYTERMS['faculty_name'], Literal( \
person.faculty)))
if 'chair' in attr:
graph.add((university, MYTERMS['chair_name'], Literal( \
person.chair)))
if 'edu_form' in attr:
graph.add((university, MYTERMS['edu_form'], Literal( \
person.edu_form)))
friends = BNode('friends')
graph.add((user, MYTERMS['friends'], friends))
graph.add((friends, RDF.type, RDF.Bag))
for id in person.friends.keys():
friend = URIRef('http://vkontakte.ru/id%s' % id)
graph.add((friends, RDF.li, friend))
# save graph to rdf-file
fname = "%s.rdf" % person.id
graph.serialize(os.path.join(self.store_path, fname), \
format='xml', encoding='UTF-8')
示例6:
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
jg=ConjunctiveGraph()
jg.bind('jobs',JOBS)
jg.bind('dc',DC)
jg.bind('jobboard',JB)
jg.bind('company',COMPANY)
jg.bind('rdfs',RDFS)
# Incremental counter for vacancy IDs
vid=0
for title,salary,location,company,crunchbase,ticker in csv.reader(file('joblist.csv')):
# Create the vacancy
vid+=1
vacancy=JB[str(vid)]
jg.add((vacancy,RDF.type,JOBS['Vacancy']))
jg.add((vacancy,DC['title'],Literal(title)))
location_id=location.lower().replace(' ','_').replace(',','')
jg.add((vacancy,JB['location'],JB[location_id]))
jg.add((JB[location_id],DC['title'],Literal(location)))
# Salary range
salaryrange=BNode()
jg.add((vacancy,JOBS['salaryrange'],salaryrange))
jg.add((salaryrange,JOBS['minimumsalary'],Literal(float(salary))))
# Create the company
cnode=JB[company.lower().replace(' ','_')]
jg.add((vacancy,JOBS['vacancywith'],cnode))
jg.add((cnode,RDF.type,JOBS['Organization']))
示例7: Graph
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
# Get the sqlite plugin. You may have to install the python sqlite libraries
store = plugin.get('SQLite', Store)('rdfstore.db')
# Open previously created store, or create it if it doesn't exist yet
try:
rt = store.open(configString,create=False)
except OperationalError, e:
try:
# There is no underlying sqlite infrastructure, create it
rt = store.open(configString,create=True)
assert rt == VALID_STORE
except OperationalError, e:
raise
import sys, pdb; pdb.post_mortem(sys.exc_info()[2])
# There is a store, use it
graph = Graph(store, identifier = URIRef(default_graph_uri))
print "Triples in graph before add: ", len(graph)
# Now we'll add some triples to the graph & commit the changes
rdflibNS = Namespace('http://rdflib.net/test/')
graph.add((rdflibNS['pic:1'], rdflibNS['name'], Literal('Jane & Bob')))
graph.add((rdflibNS['pic:2'], rdflibNS['name'], Literal('Squirrel in Tree')))
graph.commit()
print "Triples in graph after add: ", len(graph)
# display the graph in RDF/XML
print graph.serialize()
示例8: make_rdf_graph
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
def make_rdf_graph(movies):
mg=ConjunctiveGraph()
mg.bind('fb',FB)
mg.bind('dc',DC)
for movie in movies:
# Make a movie node
movie_node=IVA_MOVIE[movie['id']]
mg.add((movie_node,DC['title'],Literal(movie['title'])))
# Make the director node, give it a name and link it to the movie
dir_node=IVA_PERSON[movie['director']['id']]
mg.add((movie_node,FB['film.film.directed_by'],dir_node))
mg.add((dir_node,DC['title'],Literal(movie['director']['name'])))
for actor in movie['actors']:
# The performance node is a blank node -- it has no URI
performance=BNode()
# The performance is connected to the actor and the movie
actor_node=IVA_PERSON[actor['id']]
mg.add((actor_node,DC['title'],Literal(actor['name'])))
mg.add((performance,FB['film.performance.actor'],actor_node))
# If you had the name of the role, you could also add it to the
# performance node, e.g.
# mg.add((performance,FB['film.performance.role'],Literal('Carrie Bradshaw')))
mg.add((movie_node,FB['film.film.performances'],performance))
return mg
示例9: TriplesDatabase
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
class TriplesDatabase(object):
"""A database from the defined triples"""
def __init__(self):
self._open = False
def open(self, filename, graphClass=None):
"""
Load existing database at 'filename'.
"""
if filename is None:
if graphClass is None:
self.graph = Graph()
else:
self.graph = graphClass()
else:
assert os.path.exists(filename), (
"%s must be an existing database" % (filename,))
path, filename = os.path.split(filename)
self.graph = sqliteBackedGraph(path, filename)
self._open = True
def query(self, rest, initNs=None, initBindings=None):
"""
Execute a SPARQL query and get the results as a SPARQLResult
{rest} is a string that should begin with "SELECT ", usually
"""
assert self._open
if initNs is None:
initNs = dict(self.graph.namespaces())
if initBindings is None: initBindings = {}
sel = select(self.getBase(), rest)
ret = self.graph.query(sel, initNs=initNs, initBindings=initBindings,
DEBUG=False)
return ret
def getBase(self):
d = dict(self.graph.namespaces())
return d.get('', RDFSNS)
def addTriple(self, s, v, *objects):
"""
Make a statement/arc/triple in the database.
Strings, ints and floats as s or o will automatically be coerced to
RDFLiteral(). It is an error to give a RDFLiteral as v, so no
coercion will be done in that position.
2-tuples will be coerced to bnodes.
If more than one object is given, i.e.
addTriple(a, b, c1, c2, c3)
this is equivalent to:
addTriple(a,b,c1); addTriple(a,b,c2); addTriple(a,b,c3)
"""
assert self._open
assert len(objects) >= 1, "You must provide at least one object"
if canBeLiteral(s):
s = RDFLiteral(s)
bnode = None
for o in objects:
if canBeLiteral(o):
o = RDFLiteral(o)
elif isinstance(o, tuple) and len(o) == 2:
if bnode is None:
bnode = BNode()
self.addTriple(bnode, *o)
o = bnode
assert None not in [s,v,o]
self.graph.add((s, v, o))
def dump(self):
assert self._open
io = StringIO()
try:
self.graph.serialize(destination=io, format='n3')
except Exception, e:
import sys, pdb; pdb.post_mortem(sys.exc_info()[2])
return io.getvalue()
示例10: __toRDF
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
def __toRDF(self):
"""
Dump mailing list into a RDF file
"""
#rdf graph
store = ConjunctiveGraph()
#namespaces
store.bind('rdfs', RDFS)
store.bind('swaml', SWAML)
store.bind('sioc', SIOC)
store.bind('sioct', SIOCT)
store.bind('foaf', FOAF)
store.bind('dc', DC)
store.bind('mvcb', MVCB)
#fisrt the host graph
host = self.config.get('host')
if (len(host) > 0):
self.__addSite(store, host)
#and then the mailing list
list = URIRef(self.__getUri())
store.add((list, RDF.type, SIOC['Forum']))
#store.add((list, RDF.type, SIOCT['MailingList']))
#list information
title = self.config.get('title')
if (len(title) > 0):
store.add((list, DC['title'], Literal(title)))
description = self.config.get('description')
if (len(description) > 0):
store.add((list, DC['description'], Literal(description)))
if (len(host) > 0):
store.add((list, SIOC['has_host'], URIRef(host)))
store.add((list, SWAML['address'], Literal(self.config.get('to'))))
store.add((list, DC['date'], Literal(FileDate(self.config.get('mbox')).getStringFormat())))
store.add((list, MVCB['generatorAgent'], URIRef(self.config.getAgent())))
store.add((list, MVCB['errorReportsTo'], URIRef('http://swaml.berlios.de/bugs')))
if (self.lang != None):
store.add((list, DC['language'], Literal(self.lang)))
#subscribers
subscribers = self.subscribers.getSubscribersUris()
for uri in subscribers:
store.add((list, SIOC['has_subscriber'], URIRef(uri)))
store.add((URIRef(uri), RDF.type, SIOC['UserAccount']))
#and all messages
for msg in self.index.items:
uri = msg.getUri()
store.add((list, SIOC['container_of'], URIRef(uri)))
store.add((URIRef(uri), RDF.type, SIOC['Post']))
parent = msg.getParent()
if (parent != None):
store.add((URIRef(uri), SIOC['reply_of'], URIRef(parent)))
#and dump to disk
try:
rdf_file = open(self.config.get('dir')+'forum.rdf', 'w+')
rdf_file.write(store.serialize(format="pretty-xml"))
rdf_file.flush()
rdf_file.close()
except IOError, detail:
print 'Error exporting mailing list to RDF: ' + str(detail)
示例11: createFeatureGraphs
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
def createFeatureGraphs(rows):
albums = {}
graph = Graph(identifier = URIRef(graph_uri))
counter = 1
databases[catalogueID] = []
for row in rows:
# Create all the relevant nodes (with the correct IDs)
database = getNewNode('database')
databases[catalogueID].append(database)
feature = getNewNode('feature')
segmentation = getNewNode('segmentation')
window = getNewNode('window')
if row['feature'] == "cqt":
graph.add((feature, RDF.type, audiodb['CQTFeature']))
elif row['feature'] == "chr":
graph.add((feature, RDF.type, audiodb['ChromagramFeature']))
elif row['feature'] == "mfcc":
graph.add((feature, RDF.type, audiodb['MFCCFeature']))
if row['segtype'] == "frames":
graph.add((segmentation, RDF.type, audiodb['FrameSegmentation']))
elif row['segtype'] == "beats":
graph.add((segmentation, RDF.type, audiodb['BeatSegmentation']))
elif row['segtype'] == "segs":
graph.add((segmentation, RDF.type, audiodb['StructuralSegmentation']))
if row['windowtype'] == "hamming":
graph.add((window, RDF.type, audiodb['HammingWindow']))
graph.add((feature, audiodb["window"], window))
graph.add((feature, audiodb["segmentation"], segmentation))
graph.add((feature, audiodb["dimension"], Literal(row['dim'])))
graph.add((feature, audiodb["hop-size"], Literal(row['hopsize'])))
graph.add((feature, audiodb["window-length"], Literal(row['winlen'])))
graph.add((feature, audiodb["nfft"], Literal(row['nfft'])))
graph.add((feature, audiodb["segn"], Literal(row['segn'])))
graph.add((feature, audiodb["channel"], Literal(row['channel'])))
graph.add((feature, audiodb["loedge"], Literal(row['loedge'])))
graph.add((feature, audiodb["hiedge"], Literal(row['hiedge'])))
graph.add((feature, audiodb["octaveres"], Literal(row['octaveres'])))
version = buildNewExtractor(graph, row['software'], row['version'], row['platform'])
project = buildNewProject(graph, row['software'])
graph.add((project, doap['release'], version))
graph.add((database, RDF.type, audiodb["Database"]))
graph.add((database, audiodb["feature"], feature))
graph.add((database, audiodb["extractor"], version))
counter += 1
graph.serialize(format='xml',destination="output/"+catalogueID.lower()+"/"+"features.rdf")
示例12: createMediaGraphs
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
def createMediaGraphs(rows):
albums = {}
artists = {
'Madonna': mb_artist['79239441-bfd5-4981-a70c-55c3f15c1287'],
'John Coltrane': mb_artist['b625448e-bf4a-41c3-a421-72ad46cdb831'],
'Miles Davis' : mb_artist['561d854a-6a28-4aa7-8c99-323e6ce46c2a']}
counter = 1
for row in rows:
graph = Graph(identifier = URIRef(graph_uri))
# Create all the relevant nodes (with the correct IDs)
work = getNewNode('work')
composition = getNewNode('composition')
track = getNewNode('track')
record = getNewNode('record')
performance = getNewNode('performance')
signal = Namespace(graph_uri+"/"+row['uid'])
# If we don't have an artist url, make a foaf Agent instead.
if row['artist']:
try:
artist = artists[row['artist']]
except KeyError:
artist = getNewNode('artist')
graph.add((artist, RDF.type, foaf['Agent']))
graph.add((artist, foaf['name'], Literal(row['artist'].strip())))
artists[row['artist']] = artist;
if row['composer']:
try:
composer = artists[row['composer']]
except KeyError:
composer = getNewNode('artist')
graph.add((composer, RDF.type, foaf['Agent']))
graph.add((composer, foaf['name'], Literal(row['composer'].strip())))
artists[row['composer']] = composer;
else:
composer = artist
# Work
graph.add((work, RDF.type, mo['MusicalWork']))
# Composition
graph.add((composition, RDF.type, mo['Composition']))
if composer:
graph.add((composition, mo['composer'], composer))
graph.add((composition, mo['produced_work'], work))
# Track
graph.add((track, RDF.type, mo['Track']))
if row['artist']:
graph.add((track, foaf['maker'], artist))
if row['tracknum']:
graph.add((track, mo['track_number'], Literal(row['tracknum'])))
if row['album']:
# Album
try:
album = albums[row['album']]
except KeyError:
album = getNewNode('album')
graph.add((album, RDF.type, mo['Record']))
graph.add((album, dc['title'], Literal(row['album'].strip())))
graph.add((album, mo['release_type'], mo['album']))
albums[row['album']] = album
graph.add((album, mo['track'], track))
# Signal
graph.add((signal, RDF.type, mo['Signal']))
graph.add((signal, mo['published_as'], record))
if row['track']:
graph.add((signal, dc['title'], Literal(row['track'].strip())))
if row['isrc']:
graph.add((signal, mo['isrc'], Literal(row['isrc'].strip())))
# Add to the various databases
dbs = databases[catalogueID]
for db in dbs:
graph.add((db, audiodb["has-signal"], signal))
# Record
graph.add((record, RDF.type, mo['Record']))
graph.add((record, mo['publication_of'], signal))
graph.add((record, mo['track'], track))
# Performance
graph.add((performance, RDF.type, mo['Performance']))
graph.add((performance, mo['performance_of'], work))
if row['artist']:
graph.add((performance, mo['performer'], artist))
graph.add((performance, mo['recorded_as'], signal))
graph.close()
graph.serialize(format='xml',destination="output/"+catalogueID.lower()+"/media_"+str(counter)+".rdf")
counter += 1
示例13: __init__
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
class rdf_transform:
def __init__(self):
self.g = Graph('IOMemory')
self.g.bind('dc', dublin_core)
self.g.bind('foaf', FOAF)
self.g.bind('time-entry', owl_time)
self.g.bind('letter', letter_ns)
self.g.bind('owl', owl)
self.g.bind('ex', exam)
self.g.bind('geo', geo)
self.g.bind('base', base_uri)
def create_rdf_letter (self, letters):
'''
creates an rdf representation of letter used to load into the triple store
'''
for l in letters:
correspondence = base_uri + "letters/resource/" + l.type + '/' + urllib.quote(l.correspondent) + '/' + str(l.id) + '/rdf'
self.add_author(correspondence, "Charles Dickens")
self.add_subject(correspondence, "letter")
self.add_time(correspondence, str(l.letter_date)+'T00:00:00')
self.add_correspondent(correspondence, l.correspondent)
#self.add_place(correspondence, parse_text.find_geographical(l.letter_text))
place = ''
try:
place = str(l.letter_place)
#unicode errors are text related
except UnicodeError:
pass
if place is not '':
self.add_place(correspondence, place)
self.add_letter_text(correspondence, l.letter_text)
self.add_salutation(correspondence, l.correspondent, l.salutation)
#for line in l.letter_text.splitlines():
# if len(line.strip()) > 1:
# self.add_open(correspondence, parse_text.parse_salutation_line(line))
#this section will parse for proper names in due course
#commented out whilst code is being ported
#letter_name = parse_text.parseProperNames(text)
# print"names, ", letter_name
#for name in letter_name:
# letter_rdf += "<letter:personReferred>%s</letter:personReferred>" %(name)
letter_quotes = parse_text.parse_balanced_quotes(l.letter_text)
for quote in letter_quotes:
if str(quote[0:1]).isupper and "!" not in quote:
if quote == "ALL THE YEAR ROUND" or quote=="HOUSEHOLD WORDS" or quote== "Household Words":
self.add_magazine(correspondence, parse_text.stripPunc(quote))
else:
self.add_text(correspondence, parse_text.stripPunc(quote))
letter_rdf = self.g.serialize(format="pretty-xml", max_depth=3)
return letter_rdf
def create_rdf_end (self):
''' function to create an endpoint in rdf/xml '''
correspondence = base_uri
letter = {}
letter = dbase.get_endpoint_rdf()
letter_items = letter.items()
letter_items.sort()
works = set()
works = dbase.get_books()
for url, text in letter_items:
try:
correspondence = base_uri + "letters/resource/dickens/" + urllib.quote(str(text[1])) + '/' + str(url) + '/rdf'
self.add_author(correspondence, "Charles Dickens")
self.add_subject(correspondence, "letter")
self.add_subject(correspondence, "Charles Dickens")
self.add_subject(correspondence, parse_text.camel_case(str(text[1])))
self.add_time(correspondence, str(text[3])+'T00:00:00')
self.add_correspondent(correspondence, str(text[1]))
self.add_salutation(correspondence, urllib.quote(str(text[1])), str(text[4]))
place = str(text[5])
#for line in str(text[2]).splitlines():
# self.add_open(correspondence, parse_text.parse_salutation_line(str(text[2])))
letter = str(text[2])
#unicode errors are text related
except UnicodeError:
pass
if place is not None:
self.add_place(correspondence, place)
self.add_letter_text(correspondence, letter)
#this section will parse for proper names in due course
#.........這裏部分代碼省略.........
示例14: update_rdf_for_conversion
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
def update_rdf_for_conversion(prefix, vocab_properties, rdf_vocab_properties):
#(id, base, prefix) = get_vocab_base(vocabfile)
html_vocab_properties = {}
html_vocab_properties['format'] = 'text/html'
html_vocab_properties['name'] = "%s.html"%os.path.splitext(rdf_vocab_properties['name'])[0]
html_vocab_properties['path'] = rdf_vocab_properties['path'].replace(rdf_vocab_properties['name'], html_vocab_properties['name'])
html_vocab_properties['uri'] = rdf_vocab_properties['uri'].replace(rdf_vocab_properties['name'], html_vocab_properties['name'])
newrdf_vocab_properties = {}
newrdf_vocab_properties['format'] = 'application/rdf+xml'
newrdf_vocab_properties['name'] = "%s_modified.rdf"%os.path.splitext(rdf_vocab_properties['name'])[0]
newrdf_vocab_properties['path'] = rdf_vocab_properties['path'].replace(rdf_vocab_properties['name'], newrdf_vocab_properties['name'])
newrdf_vocab_properties['uri'] = rdf_vocab_properties['uri'].replace(rdf_vocab_properties['name'], newrdf_vocab_properties['name'])
graph = Graph()
graph.parse(rdf_vocab_properties['path'])
subject = None
for s in graph.subjects(namespaces['rdf']['type'], URIRef(namespaces['owl']['Ontology'])):
subject = s
#graph2 = Graph()
graph_ns = []
for nsprefix, nsurl in graph.namespaces():
graph_ns.append(str(nsurl))
for prefix, url in namespaces.iteritems():
if not str(url) in graph_ns:
graph.bind(prefix, URIRef(url))
#properties = get_vocab_properties(prefix)
#subject = None
#for s in graph.subjects(namespaces['dc']['title'], None):
# subject = s
#if not subject:
# for s in graph.subjects(namespaces['dcterms']['title'], None):
# subject = s
#if not subject:
# for s in graph.subjects(namespaces['dc']['creator'], None):
# subject = s
#if not subject:
# for s in graph.subjects(namespaces['dcterms']['creator'], None):
# subject = s
formatNode1 = BNode()
formatNode2 = BNode()
#Add vocabulary properties identifier and format
graph.add((subject, namespaces['dc']['identifier'], URIRef(rdf_vocab_properties['uri'])))
graph.add((subject, namespaces['dcterms']['isVersionOf'], URIRef(vocab_properties['preferredNamespaceUri'])))
graph.add((subject, namespaces['dcterms']['hasFormat'], URIRef(rdf_vocab_properties['uri'])))
graph.add((subject, namespaces['dcterms']['hasFormat'], URIRef(html_vocab_properties['uri'])))
graph.add((subject, namespaces['vann']['preferredNamespaceUri'], URIRef(vocab_properties['preferredNamespaceUri'])))
graph.add((subject, namespaces['vann']['preferredNamespacePrefix'], URIRef(vocab_properties['preferredNamespacePrefix'])))
graph.add((URIRef(html_vocab_properties['uri']), namespaces['rdf']['type'], URIRef(namespaces['dctype']['Text'])))
graph.add((URIRef(html_vocab_properties['uri']), namespaces['dc']['format'], formatNode1))
graph.add((formatNode1, namespaces['rdf']['value'], Literal('text/html')))
graph.add((formatNode1, namespaces['rdfs']['label'], Literal('HTML')))
graph.add((formatNode1, namespaces['rdf']['type'], URIRef(namespaces['dcterms']['IMT'])))
graph.add((URIRef(rdf_vocab_properties['uri']), namespaces['rdf']['type'], URIRef(namespaces['dctype']['Text'])))
graph.add((URIRef(rdf_vocab_properties['uri']), namespaces['dc']['format'], formatNode2))
graph.add((formatNode2, namespaces['rdf']['value'], Literal('application/rdf+xml')))
graph.add((formatNode2, namespaces['rdfs']['label'], Literal('RDF')))
graph.add((formatNode2, namespaces['rdf']['type'], URIRef(namespaces['dcterms']['IMT'])))
#Add rdfs:isDefinedBy for each class / property / term of the vocabulary
#Find if schema is rdfs / owl. This defines the possible types (rdf:type) for each class / property / term
#testo = vocab_type_definitions_test['rdfs']
#subjects = []
#subs = graph.subjects(namespaces['rdf']['type'], URIRef(testo))
#for s in subs:
# subjects.append(s)
#if subjects:
# objects = vocab_type_definitions_rdfs
#else:
# objects = vocab_type_definitions_owl
#For all subjects that are of the type found above, add rdfs:isDefinedBy
#for o in objects:
# subs = graph.subjects(namespaces['rdf']['type'], o)
# for s in subs:
# graph.add((s, namespaces['rdfs']['isDefinedBy'], URIRef(vocab_properties['preferredNamespaceUri'])))
list_of_terms = get_terms(rdf_vocab_properties['path'])
for s in list_of_terms:
graph.add((URIRef(s), namespaces['rdfs']['isDefinedBy'], URIRef(vocab_properties['preferredNamespaceUri'])))
rdf_str = None
rdf_str = graph.serialize(format="pretty-xml")
#f = codecs.open(newrdf_vocab_properties['path'], 'w', 'utf-8')
f = codecs.open(newrdf_vocab_properties['path'], 'w')
f.write(rdf_str)
f.close()
return (newrdf_vocab_properties, html_vocab_properties)
示例15: localGraph
# 需要導入模塊: from rdflib.Graph import ConjunctiveGraph [as 別名]
# 或者: from rdflib.Graph.ConjunctiveGraph import add [as 別名]
def localGraph():
g = ConjunctiveGraph()
g.add((EXP['dp'], EXP['firstName'], Literal('Drew')))
g.add((EXP['labeled'], RDFS.label, Literal('Labeled')))
return g