rdf2graphml
Python library for easy converting any RDF to other formats, like GraphML compatible with yEd or drawio.
The RDF-to-GraphML conversion is very customizable.
The basic idea is to extend an existing model or ontology with visualization properties.
The ontology for these annotation properties is found here: rdf2graphml.ttl.
If you do not have a model or ontology you can specify a JSON configuration file.
Usage
[-h] [-V] [-v] [--base_dir BASE_DIR] [--type_as_edge] [-m MODEL] [-c CONFIG] -o OUTPUT [inputs ...]
If you use -m and -c option, the JSON configuration will be loaded first. The model
properties will then overwrite the JSON configuration.
In any case the command line option --type_as_edge takes precedence.
The converter automatically detects the format of your inputs files based on their file extensions. The following formats
are supported out of the box:
Standard RDF Formats:
Any format supported by rdflib and explicit support for .jsonld.
Graffl: Native support for parsing .graffl files - see
the graffl project.
Configuration
While the annotation properties in the provided RDF ontology use camelCase
(e.g. rdf2graphml:lineWidth), the
corresponding keys in the JSON configuration use snake_case (e.g. line_width).
Your actual RDF URIs used in the configuration remain unchanged.
Annotating a Model or Ontology
Annotating a model or ontology is simple, just add the layout properties to your types:
@prefix rdf2graphml: <https://www.hedenus.de/rdf2graphml/> .
<http://example.org#System> a owl:Class ;
rdf2graphml:icon "icons/my_icon.png" .
<http://example.org#note> a rdf:Property ;
rdf2graphml:color "#FFAAAA" ;
rdf2graphml:lineWidth "2.0" .
Example JSON Configuration
{
"namespaces": {
"ex": "http://example.org/ontology/",
"schema": "http://schema.org/",
"rdf2": "https://www.hedenus.de/rdf2graphml/"
},
"icon_height": 80,
"preferred_language": "de",
"type_as_edge": false,
"node_properties": [
"http://www.w3.org/2000/01/rdf-schema#comment",
"http://example.org/ontology/internalId"
],
"icon_locators": [
"http://example.org/ontology/hasIcon",
"https://www.hedenus.de/rdf2graphml/icon"
],
"group_type": "http://example.org/ontology/SystemBoundary",
"group_contains": "http://example.org/ontology/containsComponent",
"default_node_style": {
"blank_nodes": {
"color": "#F0F0F0",
"shape": "ellipse"
},
"uri_nodes": {
"color": "#DAE8FC",
"shape": "roundrectangle"
}
},
"type_styles": {
"http://example.org/ontology/Database": {
"icon": "database_icon.png",
"color": "#FFE6CC",
"shape": "cylinder",
"priority": 20
},
"http://example.org/ontology/Service": {
"color": "#D5E8D4",
"shape": "rectangle",
"priority": 10
},
"https://www.hedenus.de/rdf2graphml/List": {
"color": "#FFFF88",
"shape": "hexagon",
"priority": 100
}
},
"edge_styles": {
"http://example.org/ontology/calls": {
"color": "#0000FF",
"line_type": "line",
"line_width": "2.0",
"target_arrow": "standard",
"label": "ruft auf"
},
"http://www.w3.org/1999/02/22-rdf-syntax-ns#type": {
"color": "#888888",
"line_type": "dashed",
"target_arrow": "transparent_circle"
}
},
"include_predicates": [
"http://example.org/*",
"http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
],
"exclude_predicates": [
"http://example.org/ontology/ignoredProperty"
],
"include_types": [
"*"
],
"exclude_types": [
"http://example.org/ontology/HiddenType"
]
}
Reference
General Settings
namespaces(object): A dictionary mapping prefixes to namespace URIs. These custom namespaces are registered with the converter to generate shorter QName labels (e.g.,ex:Node) for nodes and edges instead of full URIs. Overrides existing prefixes in the source graph.icon_height(integer): The target height in pixels for downloaded/loaded icons. The width is scaled proportionally using Lanczos resampling. Default:64.preferred_language(string): The language tag used to pick the primaryrdfs:labelfor display purposes (e.g.,"en"or"de"). If not found, it falls back to a label without a language tag, or an arbitrary one. Default:"en".type_as_edge(boolean): Iftrue,rdf:typerelations are drawn as explicit edges in the graph. Iffalse, they are collected as node attributes (GraphML Data). Default:false.
RDF Mapping & Extraction
node_properties(list of strings): A list of URIs. Triples with these predicates are explicitly prevented from becoming edges. Instead, their objects are attached to the subject node as GraphML data attributes.icon_locators(list of strings): A list of URIs. If a node has one of these predicates, the converter interprets the object as a URL or local file path to an image, downloads and embeds it.
Groups & Hierarchies (Nested Graphs)
group_type(string): The URI of therdf:typethat identifies a node as a group container.group_contains(string): The URI of the predicate used to link a group node to its children. These triples establish the nested graph hierarchy and will not be drawn as visible edges.
Styling
-
default_node_style(object): Fallback styling for nodes.blank_nodes: Style object (color,shape) applied to RDF Blank Nodes. Default: Grey ellipse.uri_nodes: Style object (color,shape) applied to standard URI nodes. Default: Light-blue roundrectangle.
-
type_styles(object): Mapsrdf:typeURIs to specific styles.icon(string): URL or local path to a default image/icon for this type. Takes precedence over shape. If the image fails to load, the converter gracefully falls back to the configured shape.color(string): Hex color code (e.g."#ADD8E6").shape(string): Shape identifierpriority(integer): If a node has multiple types, the style with the highest priority wins.
-
edge_styles(object): Maps predicate URIs to edge styles.color(string): Hex color code (e.g."#ADD8E6").line_type(string): Line type identifier.line_width(string): Line width (e.g.2.0).target_arrow(string): Arrow types identifier.
RDF Lists
The converter automatically aggregates rdf:first/rdf:rest lists into a single node. You can style this generated
node by targeting the URI https://www.hedenus.de/rdf2graphml/List.
"type_styles": {
"https://www.hedenus.de/rdf2graphml/List": {
"color": "#FFD700",
"shape": "hexagon",
"priority": 100
}}
Links
If you want to create clickable hyperlink you can use the type rdf2graphml:Link.
If a node is hyperlink then the label text will be underlined.
If the node is a blank node, then the url property is taken from rdf:value.
Filtering
Filters accept Unix shell-style wildcards (e.g., * or http://example.org/*). The exclusion rules are always
evaluated before the inclusion rules.
include_predicates(list of strings): Only predicates matching these patterns will be drawn as edges. If empty, all predicates (that are not structural/excluded) are allowed.exclude_predicates(list of strings): Predicates matching these patterns are completely ignored.include_types(list of strings): Only nodes possessing anrdf:typematching these patterns are drawn.exclude_types(list of strings): Nodes possessing anrdf:typematching these patterns are explicitly ignored.
Styles known by yEd
Also see the application's documentation.
shape:
diamondellipsefatarrow(pointing to right)fatarrow2(pointing to left)hexagonoctagonparallelogram(skewed right)parallelogram2(skewed left)rectangle3drectangleroundrectanglestar5star6star8trapezoid(pointing up)trapezoid2(pointing down)triangle(pointing up)triangle2(pointing down)
line_type:
dasheddashed_dotteddottedline
target_arrow:
circledeltadiamondnoneplainshortstandardtransparent_circlewhite_circlewhite_deltawhite_diamond
Credits
Metadata
Release files for rdf2graphml 0.10.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rdf2graphml-0.10.3.tar.gz | 34.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rdf2graphml-0.10.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 67.3 kB
Release files / rdf2graphml-0.10.3.tar.gz
| Download URL | rdf2graphml-0.10.3.tar.gz |
|---|---|
| Size | 34.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
32fb5bbbaec291c18768d07f519edee41e3a6120fc3b78a8c85aa2bced634cd8
|
|
BLAKE2b-256 checksum How to use checksums |
fadfe8290e360fb538738a83503f7c261412dac572cce97bfc3966cb3978b6e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / rdf2graphml-0.10.3-py3-none-any.whl
| Download URL | rdf2graphml-0.10.3-py3-none-any.whl |
|---|---|
| Size | 33.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2461b2de4dc895a5c50153718c007e6547ea7701d5349f46df4e1d0ddb01ccb5
|
|
BLAKE2b-256 checksum How to use checksums |
92e65b691a106ead10a7d7f42bb4783286b24938a1b13ca4649bdee134e947ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|