Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/rdflib/tools/rdfs2dot.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
| author | shellac |
|---|---|
| date | Mon, 01 Jun 2020 08:59:25 -0400 |
| parents | 79f47841a781 |
| children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/rdflib/tools/rdfs2dot.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -""" -A commandline tool for drawing RDFS Class diagrams in Graphviz DOT -format - -You can draw the graph of an RDFS file directly: - -.. code-block: bash - - rdf2dot my_rdfs_file.rdf | dot -Tpng | display -""" - -import rdflib.extras.cmdlineutils - -import sys -import itertools -import collections - - -from rdflib import XSD, RDF, RDFS - - -XSDTERMS = [XSD[x] for x in ( - "anyURI", "base64Binary", "boolean", "byte", "date", "dateTime", "decimal", - "double", "duration", "float", "gDay", "gMonth", "gMonthDay", "gYear", - "gYearMonth", "hexBinary", "ID", "IDREF", "IDREFS", "int", "integer", - "language", "long", "Name", "NCName", "negativeInteger", "NMTOKEN", - "NMTOKENS", "nonNegativeInteger", "nonPositiveInteger", "normalizedString", - "positiveInteger", "QName", "short", "string", "time", "token", - "unsignedByte", "unsignedInt", "unsignedLong", "unsignedShort")] - -EDGECOLOR = "blue" -NODECOLOR = "black" -ISACOLOR = "black" - - -def rdfs2dot(g, stream, opts={}): - """ - Convert the RDFS schema in a graph - writes the dot output to the stream - """ - - fields = collections.defaultdict(set) - nodes = {} - - def node(x): - - if x not in nodes: - nodes[x] = "node%d" % len(nodes) - return nodes[x] - - def label(x, g): - - l = g.value(x, RDFS.label) - if l is None: - try: - l = g.namespace_manager.compute_qname(x)[2] - except: - pass # bnodes and some weird URIs cannot be split - return l - - stream.write("digraph { \n node [ fontname=\"DejaVu Sans\" ] ; \n") - - for x in g.subjects(RDF.type, RDFS.Class): - n = node(x) - - for x, y in g.subject_objects(RDFS.subClassOf): - x = node(x) - y = node(y) - stream.write("\t%s -> %s [ color=%s ] ;\n" % (y, x, ISACOLOR)) - - for x in g.subjects(RDF.type, RDF.Property): - for a, b in itertools.product( - g.objects(x, RDFS.domain), g.objects(x, RDFS.range)): - if b in XSDTERMS or b == RDFS.Literal: - l = label(b, g) - if b == RDFS.Literal: - l = "literal" - fields[node(a)].add((label(x, g), l)) - else: - # if a in nodes and b in nodes: - stream.write( - "\t%s -> %s [ color=%s, label=\"%s\" ];\n" % ( - node(a), node(b), EDGECOLOR, label(x, g))) - - for u, n in list(nodes.items()): - stream.write("# %s %s\n" % (u, n)) - f = ["<tr><td align='left'>%s</td><td>%s</td></tr>" % - x for x in sorted(fields[n])] - opstr = "%s [ shape=none, color=%s label=< <table color='#666666'" + \ - " cellborder=\"0\" cellspacing='0' border=\"1\"><tr>" + \ - "<td colspan=\"2\" bgcolor='grey'><B>%s</B></td>" + \ - "</tr>%s</table> > ] \n" - stream.write(opstr % (n, NODECOLOR, label(u, g), "".join(f))) - - stream.write("}\n") - - -def _help(): - sys.stderr.write(""" -rdfs2dot.py [-f <format>] files... -Read RDF files given on STDOUT, writes a graph of the RDFS schema in -DOT language to stdout --f specifies parser to use, if not given, - -""") - - -def main(): - rdflib.extras.cmdlineutils.main(rdfs2dot, _help) - -if __name__ == '__main__': - main()
