在 Python 中可视化 RDFLIB 图
Visualize an RDFLIB Graph in Python
我是 python 的 RDFLIB 新手。我在这里找到了创建图形的示例。可视化此代码创建的图形的最简单方法是什么?
import rdflib
# Now we create a graph, a representaiton of the ontology
g = rdflib.Graph()
# Now define the key words that we will use (the edge weights of the graph)
has_border_with = rdflib.URIRef('http://www.example.org/has_border_with')
located_in = rdflib.URIRef('http://www.example.org/located_in')
# define the things - base level objects that will be the nodes
# In this case first we have countries
germany = rdflib.URIRef('http://www.example.org/country1')
france = rdflib.URIRef('http://www.example.org/country2')
china = rdflib.URIRef('http://www.example.org/country3')
mongolia = rdflib.URIRef('http://www.example.org/country4')
# then we have continents
europa = rdflib.URIRef('http://www.example.org/part1')
asia = rdflib.URIRef('http://www.example.org/part2')
# Having defined the things and the edge weights, now assemble the graph
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))
我看到 rdflib 包有一个工具组件,它有一个名为 rdfs2dot 的函数。如何使用此函数显示其中包含 RDF 图的绘图?
在这个问题中使用提示:https://www.researchgate.net/post/Is_there_any_open_source_RDF_graph_converter
我能够通过转换为 Networkx 图表并使用 Networkx/Matplotlib 绘图工具来绘制 RDF 图表。
import rdflib
from rdflib.extras.external_graph_libs import rdflib_to_networkx_multidigraph
import networkx as nx
import matplotlib.pyplot as plt
url = 'https://www.w3.org/TeamSubmission/turtle/tests/test-30.ttl'
g = rdflib.Graph()
result = g.parse(url, format='turtle')
G = rdflib_to_networkx_multidigraph(result)
# Plot Networkx instance of RDF Graph
pos = nx.spring_layout(G, scale=2)
edge_labels = nx.get_edge_attributes(G, 'r')
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)
nx.draw(G, with_labels=True)
#if not in interactive mode for
plt.show()
要可视化大型 RDF 图,样式可能需要一些微调;-)
我可以按照您的建议用 rdf2dot 为您的 RDF 图表制作一张图片。尽管如此,我对该库并不完全满意,因为它没有为文字创建节点。这是我的代码:
!pip install pydotplus
!pip install graphviz
import io
import pydotplus
from IPython.display import display, Image
from rdflib.tools.rdf2dot import rdf2dot
def visualize(g):
stream = io.StringIO()
rdf2dot(g, stream, opts = {display})
dg = pydotplus.graph_from_dot_data(stream.getvalue())
png = dg.create_png()
display(Image(png))
visualize(g)
给出以下结果:
我是 python 的 RDFLIB 新手。我在这里找到了创建图形的示例。可视化此代码创建的图形的最简单方法是什么?
import rdflib
# Now we create a graph, a representaiton of the ontology
g = rdflib.Graph()
# Now define the key words that we will use (the edge weights of the graph)
has_border_with = rdflib.URIRef('http://www.example.org/has_border_with')
located_in = rdflib.URIRef('http://www.example.org/located_in')
# define the things - base level objects that will be the nodes
# In this case first we have countries
germany = rdflib.URIRef('http://www.example.org/country1')
france = rdflib.URIRef('http://www.example.org/country2')
china = rdflib.URIRef('http://www.example.org/country3')
mongolia = rdflib.URIRef('http://www.example.org/country4')
# then we have continents
europa = rdflib.URIRef('http://www.example.org/part1')
asia = rdflib.URIRef('http://www.example.org/part2')
# Having defined the things and the edge weights, now assemble the graph
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))
我看到 rdflib 包有一个工具组件,它有一个名为 rdfs2dot 的函数。如何使用此函数显示其中包含 RDF 图的绘图?
在这个问题中使用提示:https://www.researchgate.net/post/Is_there_any_open_source_RDF_graph_converter
我能够通过转换为 Networkx 图表并使用 Networkx/Matplotlib 绘图工具来绘制 RDF 图表。
import rdflib
from rdflib.extras.external_graph_libs import rdflib_to_networkx_multidigraph
import networkx as nx
import matplotlib.pyplot as plt
url = 'https://www.w3.org/TeamSubmission/turtle/tests/test-30.ttl'
g = rdflib.Graph()
result = g.parse(url, format='turtle')
G = rdflib_to_networkx_multidigraph(result)
# Plot Networkx instance of RDF Graph
pos = nx.spring_layout(G, scale=2)
edge_labels = nx.get_edge_attributes(G, 'r')
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)
nx.draw(G, with_labels=True)
#if not in interactive mode for
plt.show()
要可视化大型 RDF 图,样式可能需要一些微调;-)
我可以按照您的建议用 rdf2dot 为您的 RDF 图表制作一张图片。尽管如此,我对该库并不完全满意,因为它没有为文字创建节点。这是我的代码:
!pip install pydotplus
!pip install graphviz
import io
import pydotplus
from IPython.display import display, Image
from rdflib.tools.rdf2dot import rdf2dot
def visualize(g):
stream = io.StringIO()
rdf2dot(g, stream, opts = {display})
dg = pydotplus.graph_from_dot_data(stream.getvalue())
png = dg.create_png()
display(Image(png))
visualize(g)
给出以下结果: