{ "info": { "author": "Friedrich Lindenberg", "author_email": "friedrich@pudo.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4" ], "description": "# jsongraph [![Build Status](https://travis-ci.org/pudo/jsongraph.svg?branch=master)](https://travis-ci.org/pudo/jsongraph)\n\nThis library provides tools to integrate data from multiple sources into a\ncoherent data model. Given a heterogeneous set of source records, it will\ngenerate a set of composite entities with merged information from all\navailable sources. Further, it allows querying the resulting graph using a\nsimple, JSON-based graph query language.\n\nThe intent of this tool is to make a graph-based data integration system\n(based on RDF) seamlessly available through simple JSON objects.\n\n## Usage\n\nThis is what using the library looks like in a simplified scenario:\n\n```python\nfrom jsongraph import Graph\n\n# Create a graph for all project information. This can be backed by a\n# triple store or an in-memory construct.\ngraph = Graph(base_uri='file:///path/to/schema/files')\ngraph.register('person', 'person_schema.json')\n\n# Load data about a person.\ncontext = graph.context()\ncontext.add('person', data)\ncontext.save()\n# Repeat data loading for a variety of source files.\n\n# This will integrate data from all source files into a single representation\n# of the data.\ncontext = graph.consolidate('urn:prod')\n\n# Metaweb-style queries:\nfor item in context.query([{\"name\": None, \"limit\": 5}]):\n print item['name']\n```\n\n## Design\n\nA ``jsongraph`` application is focussed on a ``Graph``, which stores a set of\ndata. A ``Graph`` can either exist only in memory, or be stored in a backend\ndatabase.\n\nAll data in a ``Graph`` is structured as collections of JSON objects (i.e.\nnested dictionaries, lists and values). The structure of all stored objects\nmust be defined using a [JSON Schema](http://json-schema.org/). Some limits\napply to such schema, e.g. they may not allow additional or pattern properties.\n\n### Contexts and Metadata\n\nThe objects in each ``Graph`` are grouped into a set of ``Contexts``. Those\nalso include metadata, such as the source of the data, and the level of trust\nthat the system shall have in those data. A ``Context`` will usually correspond\nto a source data file, or a user interaction.\n\n### Consolidated Contexts\n\nWhen working with ``jsongraph``, a user will first load data into a variety of\n``Contexts``. They can then generate a consolidated version of the data, in a\nseparate ``Context``.\n\nThis consolidated version applies entity de-duplication. For object properties\nwith multiple available values across several ``Contexts``, the information\nfrom the most trustworthy ``Context`` will be chosen.\n\n### Queries\n\n``jsongraph`` includes a query language implementation, which is heavily\ninspired by Google's [Metaweb Query Language](http://mql.freebaseapps.com/ch03.html).\nQueries are written as JSON, and search proceeds by example. Searches can also\nbe deeply nested, traversing the links between objects stored in the ``Graph``\nat an arbitrary complexity.\n\nQueries on the data can be run either against any of the source ``Contexts``,\nor against the consolidated context. Queries against the consolidated\n``Context`` will produce responses which reflect the best available information\nbased on data from a variety of sources.\n\n### De-duplication\n\nOne key part of the functions of this library will be the application of\nde-duplication rules. This will take place in three steps:\n\n* Generating a set of de-duplicating candidates for all entities in a given\n ``Graph``. These will be simplified representations of objects which can be\n fed into a comparison tool (either automated or interactive with the user).\n\n* Once the candidates have been decided, they are transformed into a mapping of\n the type (``original_fingerprint`` -> ``same_as_fingerprint``). Such mappings\n are applied to a context.\n\n* Upon graph consolidation (see above), the entities which have been mapped to\n another are not included. All their properties are inherited by the\n destination entity.\n\nA data comparison candidate may look like this:\n\n```json\n{\n \"fingerprint\": \"...\",\n \"entity\": \"...\",\n \"data\": {\n\n },\n \"source\": {\n \"label\": \"...\",\n \"url\": \"http://...\"\n }\n}\n```\n\n## Tests\n\nThe test suite will usually be executed in it's own ``virtualenv`` and perform a\ncoverage check as well as the tests. To execute on a system with ``virtualenv``\nand ``make`` installed, type:\n\n```bash\n$ make test\n```\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/pudo/jsongraph", "keywords": "schema jsonschema json rdf graph sna networks", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "jsongraph", "package_url": "https://pypi.org/project/jsongraph/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/jsongraph/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/pudo/jsongraph" }, "release_url": "https://pypi.org/project/jsongraph/0.2.2/", "requires_dist": null, "requires_python": null, "summary": "Library for data integration using a JSON/RDF object graph.", "version": "0.2.2" }, "last_serial": 1744110, "releases": { "0.1": [], "0.2": [ { "comment_text": "", "digests": { "md5": "50d7182e6a39540e6951a70b790895f7", "sha256": "8d2abb4aa2a8fe823febf2da5099cd5a90cbc799ccb31ba566e10ef1cd6c1ea3" }, "downloads": -1, "filename": "jsongraph-0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "50d7182e6a39540e6951a70b790895f7", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 18097, "upload_time": "2015-09-19T16:02:46", "url": "https://files.pythonhosted.org/packages/f6/bd/20a9ffde5711a9dfad0b4893a2fe21142f108b44680d43937b8ff8552a16/jsongraph-0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "219ec67644adabaa04bdde22e0cb62fd", "sha256": "c687f5b7cfe9ed922f745e3d6eab8be3f6ed382c79ebc355611afc432cee5c34" }, "downloads": -1, "filename": "jsongraph-0.2.tar.gz", "has_sig": false, "md5_digest": "219ec67644adabaa04bdde22e0cb62fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13702, "upload_time": "2015-09-19T16:02:41", "url": "https://files.pythonhosted.org/packages/17/b7/4cf30c00c133be4becc5854788ca93befb2144d34d101e21e4c891e9be33/jsongraph-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "e5e44f67f74c30136b7817bf8e8226a4", "sha256": "df7053969894b934b2b78c3f646ce752ccc7923455ff276ec4604d03f8dec8b4" }, "downloads": -1, "filename": "jsongraph-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "e5e44f67f74c30136b7817bf8e8226a4", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 18211, "upload_time": "2015-09-25T17:39:15", "url": "https://files.pythonhosted.org/packages/f6/5d/62547c4578beb02965ddf25b723d4ec214e322bbdf404328101c591b561f/jsongraph-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "34bb88624750308114b12469ead41176", "sha256": "e6d8a7de3c10bf503b525d7a273c35229b1264615979e6c29ef118688a5cd341" }, "downloads": -1, "filename": "jsongraph-0.2.1.tar.gz", "has_sig": false, "md5_digest": "34bb88624750308114b12469ead41176", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13617, "upload_time": "2015-09-25T17:39:10", "url": "https://files.pythonhosted.org/packages/6e/c1/dba9d80a4fb451bee84788bc714e4f21d88cb4c065b37b0b1bf2cbf5fbf0/jsongraph-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "a82798565d7e8a8b7fee5711e54b5afc", "sha256": "cf401ce7fbd2fdbae5836d364a551c746e5ae83d73ffed0ba8e98f20477fbfda" }, "downloads": -1, "filename": "jsongraph-0.2.2-py2-none-any.whl", "has_sig": false, "md5_digest": "a82798565d7e8a8b7fee5711e54b5afc", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 18246, "upload_time": "2015-09-29T14:38:11", "url": "https://files.pythonhosted.org/packages/1c/50/2661dbb80effab7849dc805433f27e08bc7cab08c947e3a93ff027ad3b4b/jsongraph-0.2.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32d9001a2068df235d1d05b6f174a51a", "sha256": "27178b4bba51b70892a813369334a67a50bbb637af50ac06383e74818a10f5b2" }, "downloads": -1, "filename": "jsongraph-0.2.2.tar.gz", "has_sig": false, "md5_digest": "32d9001a2068df235d1d05b6f174a51a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13657, "upload_time": "2015-09-29T14:38:00", "url": "https://files.pythonhosted.org/packages/6f/74/4647bb32c80fe1fedd4d150aa37044f8837f1c252cb40e0813da1a2c1dd3/jsongraph-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a82798565d7e8a8b7fee5711e54b5afc", "sha256": "cf401ce7fbd2fdbae5836d364a551c746e5ae83d73ffed0ba8e98f20477fbfda" }, "downloads": -1, "filename": "jsongraph-0.2.2-py2-none-any.whl", "has_sig": false, "md5_digest": "a82798565d7e8a8b7fee5711e54b5afc", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 18246, "upload_time": "2015-09-29T14:38:11", "url": "https://files.pythonhosted.org/packages/1c/50/2661dbb80effab7849dc805433f27e08bc7cab08c947e3a93ff027ad3b4b/jsongraph-0.2.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32d9001a2068df235d1d05b6f174a51a", "sha256": "27178b4bba51b70892a813369334a67a50bbb637af50ac06383e74818a10f5b2" }, "downloads": -1, "filename": "jsongraph-0.2.2.tar.gz", "has_sig": false, "md5_digest": "32d9001a2068df235d1d05b6f174a51a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13657, "upload_time": "2015-09-29T14:38:00", "url": "https://files.pythonhosted.org/packages/6f/74/4647bb32c80fe1fedd4d150aa37044f8837f1c252cb40e0813da1a2c1dd3/jsongraph-0.2.2.tar.gz" } ] }