Skip to main content

Converts RDF to GraphML suitable for yEd.

Project description

rdf2graphml

Python library for easy converting any RDF to GraphML (http://graphml.graphdrawing.org/specification/xsd.html) compatible with yEd (https://www.yworks.com/products/yed).

Note: This is work in progress!

Usage

rdf2graphml [-h] [-v] [--type_as_edge] [-c CONFIG] [-m MODEL] OUTPUT INPUT [INPUT..] 

Configuration

The RDF-to-GraphML conversion is very customizable. The configuration can be supplied as JSON file and is extracted from a model or ontology. See rdf2graphml.ttl for the configuration ontology.

Example JSON Configuration

{
  "namespaces": {
    "ex": "http://example.org/ontology/"
  },
  "base_dir": "./icons",
  "icon_height": 64,
  "preferred_language": "en",
  "type_as_edge": false,
  "node_properties": [
    "http://www.w3.org/2000/01/rdf-schema#label"
  ],
  "icon_locators": [
    "http://example.org/ontology/iconUrl"
  ],
  "group_type": "http://example.org/ontology/Group",
  "group_contains": "http://example.org/ontology/contains",
  "default_node_style": {
    "blank_nodes": {
      "color": "#DDDDDD",
      "shape": "ellipse"
    },
    "uri_nodes": {
      "color": "#E8EEF7",
      "shape": "roundrectangle"
    }
  },
  "type_styles": {
    "http://example.org/ontology/System": {
      "icon": "system_icon.png",
      "color": "#ADD8E6",
      "shape": "roundrectangle",
      "priority": 10
    }
  },
  "edge_styles": {
    "http://example.org/ontology/dependsOn": {
      "color": "#FF0000",
      "line_type": "dashed",
      "target_arrow": "standard"
    }
  },
  "include_predicates": [
    "*"
  ],
  "exclude_predicates": []
}

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.
  • base_dir (string): The base directory used to resolve local image paths specified by icon_locators. Defaults to the directory of the configuration file.
  • 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 primary rdfs:label for 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: "de".
  • type_as_edge (boolean): If true, rdf:type relations are drawn as explicit edges in the graph. If false, 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/reads it, converts it to Base64, and renders the node as a yEd ImageNode.

Groups & Hierarchies (Nested Graphs)

  • group_type (string): The URI of the rdf:type that 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 in yEd 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): Maps rdf:type URIs 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): yEd shape identifier (e.g., "roundrectangle", "ellipse", "hexagon", "diamond").
    • priority (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.
    • line_type (string): Supported yEd line types (e.g., "line", "dashed", "dotted").
    • target_arrow (string): Supported yEd arrow types (e.g., "standard", "white_delta", "none").

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
    }}

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 an rdf:type matching these patterns are drawn.
  • exclude_types (list of strings): Nodes possessing an rdf:type matching these patterns are explicitly ignored.

Styles known by yEd

shape:

  • diamond
  • ellipse
  • hexagon
  • octagon
  • parallelogram
  • rectangle
  • rectangle3d
  • roundrectangle
  • trapezoid
  • trapezoid2
  • triangle

line_type:

  • dashed
  • dashed_dotted
  • dotted
  • line

target_arrow:

  • diamond
  • none
  • standard
  • transparent_circle
  • white_delta

Annotating an Ontology

Credits

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rdf2graphml-0.6.1.tar.gz (21.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rdf2graphml-0.6.1-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file rdf2graphml-0.6.1.tar.gz.

File metadata

  • Download URL: rdf2graphml-0.6.1.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for rdf2graphml-0.6.1.tar.gz
Algorithm Hash digest
SHA256 f361b3255690c6ce637670b107a2c53ac716073d88c3a583604cd96648503af6
MD5 2e15a6360709d97654b8ff20d5607b4b
BLAKE2b-256 b894107fdad6cb582efb10ee9e5c9fdd92928b4a8de3f347797e84db1ad619e0

See more details on using hashes here.

File details

Details for the file rdf2graphml-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: rdf2graphml-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for rdf2graphml-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b0330f6176911faa60f15462c74d12cf2aea6eaa50ec47e6970e70cd81e6312b
MD5 373ac8c589f8ecd6cd9767517ffde400
BLAKE2b-256 0fa8f11036c794bb1d915a9e44b4189808689ba450eda1effec2bf8784b0a0d8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page