本文整理汇总了Python中rdflib.Graph.link方法的典型用法代码示例。如果您正苦于以下问题:Python Graph.link方法的具体用法?Python Graph.link怎么用?Python Graph.link使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rdflib.Graph
的用法示例。
在下文中一共展示了Graph.link方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_state
# 需要导入模块: from rdflib import Graph [as 别名]
# 或者: from rdflib.Graph import link [as 别名]
#.........这里部分代码省略.........
query_filter = "FILTER((%s))" % (") && (".join(query_filter))
else:
query_filter = ""
reverse = (parameters.get("reverse", "no").lower()
not in ("false", "no", "0"))
limit = parameters.get("limit")
offset = parameters.get("offset")
matching_obsels = [
row[0].n3() for row in self.state.query(
self.build_select(minb, maxe, after, before, reverse,
query_filter, limit, offset),
initNs={
"ktbs": "http://liris.cnrs.fr/silex/2009/ktbs#"
},
)
]
LOG.debug("%s matching obsels", len(matching_obsels))
if len(matching_obsels) == 0:
matching_obsels.append(Literal(42))
# this is a hack because rdflib 4.2.2 does not support an empty VALUES list
# but it should not match anything
query_str = """PREFIX ktbs: <http://liris.cnrs.fr/silex/2009/ktbs#>
SELECT ?s ?p ?o ?strc ?otrc ?obs {
VALUES ?obs { %s }
{
?obs ?p ?o.
BIND(?obs as ?s)
OPTIONAL { ?o ktbs:hasTrace ?otrc }
} UNION {
?s ?p ?obs.
BIND(?obs as ?o)
OPTIONAL { ?s ktbs:hasTrace ?strc }
} UNION {
?obs ?p1 ?s.
FILTER isBlank(?s)
?s ?p ?o.
} UNION {
?obs ?p1 ?b1.
FILTER isBlank(?b1)
?b1 ?p2 ?s.
FILTER isBlank(?s)
?s ?p ?o.
}
}
"""% (' '.join(matching_obsels))
results = self.state.query(query_str)
LOG.debug("described by %s triples", len(results))
# add description of all matching obsels
old_graph_len = len(graph)
graph_add = graph.add
for s, p, o, strc, otrc, obs in results:
graph_add((s, p, o))
if strc is not None:
graph_add((s, KTBS.hasTrace, strc))
if otrc is not None:
graph_add((o, KTBS.hasTrace, otrc))
if len(graph) > old_graph_len:
maxe_triple = max(( t for t in graph.triples((None, KTBS.hasEnd, None)) ),
key=lambda t: t[2].toPython() )
maxobs = maxe_triple[0]
maxe = maxe_triple[2].toPython()
else:
maxobs = maxe = None
# canonical link
graph.links = links = [{
'uri': self.uri,
'rel': 'canonical',
'etag': iter(self.iter_etags()).next(),
'mstable-etag': self.get_str_mon_tag(),
}]
# link to next page
if limit and maxobs:
obs_id = maxobs.rsplit("/", 1)[1]
if reverse:
qstr = "?reverse&limit=%s&before=%s" % (limit, obs_id)
else:
qstr = "?limit=%s&after=%s" % (limit, obs_id)
if minb:
qstr += "&minb=%s" % minb
if maxb:
qstr += "&maxb=%s" % maxb
if mine:
qstr += "&mine=%s" % mine
if maxe:
qstr += "&maxe=%s" % maxe
graph.link = self.uri + qstr
links.append({'uri': self.uri + qstr, 'rel': 'next'})
# compute etags
graph.etags = list(self.iter_etags({'maxe': maxe, 'before': before}))
return graph