Package: knows
Knows is a user-friendly tool for benchmarking property graphs. These graphs are crucial in many fields. Knows supports
multiple output formats and visualization capabilities, making it a go-to tool for educators, researchers, and data
enthusiasts.Key Features 🚀Customizable Graph Generation: Tailor your graphs by specifying the number of nodes and edges.Diverse Output Formats: Export graphs in formats like GraphML, YARS-PG, GEXF, GML, SVG, JSON, and others.Integrated Graph Visualization: Conveniently visualize your graphs in SVG format.Intuitive Command-Line Interface (CLI): A user-friendly CLI for streamlined graph generation and visualization.Docker Compatibility: Deploy Knows in Docker containers for a consistent and isolated runtime environment.Graph StructureGenerates graphs with specified or random nodes and edges.Creates directed graphs.Nodes are labeledPersonwith unique IDs (N1, N2, N3, ..., Nn).Nodes featurefirstNameandlastNameproperties with randomly assigned names.Edges are labeledknowsand include acreateDateproperty with a random date.Edges have random nodes, avoiding cycles.Installation 🛠️You can install knows via PyPI Docker or run it from the source code.Install via PyPIInstallation:pipinstallknows[draw]Thedrawinstalls amatplotliblibrary for graph visualization. You can omit the[draw]if you don't need visualization andsvgoutput generation.Running Knows:knows[nodes][edges][options]Docker Deployment 🐳From Docker HubPull Image:dockerpulllszeremeta/knowsRun Container:dockerrun--rmlszeremeta/knows[nodes][edges][options]Building from SourceBuild Image:dockerbuild-tknows.Run Container:dockerrun--rmknows[nodes][edges][options]Python from SourceClone Repository:gitclonegit@github.com:lszeremeta/knows.gitcdknowsInstall Requirements:pipinstall-rrequirements.txtExecute Knows:python-mknows[nodes][edges][options]Usage 💡Basic Usageknows[nodes][edges][options]To view all available options, use:knows-hPositional Argumentsnodes: Specify the number of nodes in the graph. Selected randomly if not specified.edges: Specify the number of edges in the graph. Selected randomly if not specified.Options-h,--help: Display the help message and exit the program.-f {graphml,yarspg,gexf,gml,svg,adjacency_list,multiline_adjacency_list,edge_list,json},--format {graphml,yarspg,gexf,gml,svg,adjacency_list,multiline_adjacency_list,edge_list,json}:
Choose the format to output the graph. Default:graphml.-d,--draw: Generate an image of the graph (default is no image). This option may not work in the Docker.Practical Examples 🌟Create a random graph in GraphML format:knowsCreate a 100-node, 70-edge graph inYARS-PG format:knows10070-fyarspg>graph.yarspgCreate a 100-node, 50-edge graph in GraphML format:knows10050>graph.graphmlCreate, save, and visualize a 100-node, 50-edge graph in SVG:knows10050-fsvg-d>graph.svgCreate, save a 100-node, 50-edge graph in SVG with a custom filename:knows10050-fsvg>graph.svgCreate a graph in JSON format:knows-fjson>graph.jsonContribute to Knows 👥Your ideas and contributions can make Knows even better! If you're new to open source,
readHow to Contribute to Open SourceandCONTRIBUTING.md.License 📜Knows is licensed under theMIT License.