{ "info": { "author": "Tom Gillespie", "author_email": "tgbugs@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# ttlser\nDeterministic turtle serialization for rdflib.\n\n## Documentation\nSee the [docs](./docs/ttlser.md) for the full specification and\ndetails on the implemention.\n\nttlser also includes a number of other turtle serializers for\nspecific rendering needs.\n\n## ttlfmt\n`ttlser` provides a `ttlfmt` script that can convert any rdflib supported\nformat into the output format supported by the serializers or any other\nrdflib serializer. If you want to use it you should install with `ttlser[ttlfmt]`.\n\n## Known issues\n1. symmetric predicates: If you have symmetric predicates like `owl:disjointWith` then\nttlser needs to know about them so that it can do the reordering those cases appropriately,\notherwise you will end up with situations where another tool reorders the serialization and\nttlser has to assume that the ordering is semantically meaningful. See\n[`symmetric_predicates`](https://github.com/tgbugs/pyontutils/blob/89789653f51b77b13e32dc4f27e231ab00769429/ttlser/ttlser/serializers.py#L234)\nin [serializers.py](ttlser/serializers.py).\n2. multiple prefixes: If there is more than one curie prefix for the same iri prefix\nthen the one that is selected will depend on the dicationary ordering (which while\nstable in newer version of python is not guranteed to be the same based on the\ncontents of the data, rather on the history of the additions and removals).\n3. rdflib version: ttlser cannot produce deterministic results without the changes\nadded in https://github.com/RDFLib/rdflib/pull/649. Hopefully those will be merged\nfor rdflib-5.0.0, in the mean time ttlser depends on neurdflib which includes those\nchanges. Once it is merged then ttlser will depend on versions of rdflib that come\nafter and neurdflib will be deprecated.\n4. Random failures. Every once in awhile list serialization fails specatcuarly.\nThe cause is not obvious (same input file every time for testing), but it is probably\nbecause the fixed point function used to implement bnode ranking has a bug.\n5. scottl is a broken mess. In principle this orders by the `rdfs:subClassOf` hierarchy\nand then `natsort`, however in practice it currently does whatever it wants. I'm also\nfairly certain that the test template [scogood.ttl](./test/scogood.ttl) is not correct.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tgbugs/pyontutils/tree/master/ttlser", "keywords": "rdflib rdf deterministic turtle ttl", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "ttlser", "package_url": "https://pypi.org/project/ttlser/", "platform": "", "project_url": "https://pypi.org/project/ttlser/", "project_urls": { "Homepage": "https://github.com/tgbugs/pyontutils/tree/master/ttlser" }, "release_url": "https://pypi.org/project/ttlser/1.0.0/", "requires_dist": [ "neurdflib", "pytest ; extra == 'test'", "pytest-runner ; extra == 'test'", "docopt ; extra == 'ttlfmt'", "joblib ; extra == 'ttlfmt'" ], "requires_python": ">=3.5", "summary": "Deterministic turtle serialization for rdflib.", "version": "1.0.0" }, "last_serial": 5094136, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "43bde6d75d6bc4eeea44965faa7c937d", "sha256": "fa7a051be925ecee4b9570f87c24f34de08b74e80aca4999e5a5b53a843bdca0" }, "downloads": -1, "filename": "ttlser-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "43bde6d75d6bc4eeea44965faa7c937d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5", "size": 16234, "upload_time": "2019-04-04T03:50:30", "url": "https://files.pythonhosted.org/packages/12/cb/f24e7fa9c9e74dd87756b2087d2cca71bba9b2b6c9c8b8a50ab6fd44613d/ttlser-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "97e9835e0c425d4b3b58642cedd39c88", "sha256": "3c0858b7a51ba1a0a767b8765977964e9bc1df8fce698193a244eb5a57439d67" }, "downloads": -1, "filename": "ttlser-1.0.0.tar.gz", "has_sig": false, "md5_digest": "97e9835e0c425d4b3b58642cedd39c88", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24806, "upload_time": "2019-04-04T03:50:32", "url": "https://files.pythonhosted.org/packages/8e/14/cc17400bb25f6fcc3c6e7db8a85d854097a04f7e24ab984eb3263e5997bf/ttlser-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "43bde6d75d6bc4eeea44965faa7c937d", "sha256": "fa7a051be925ecee4b9570f87c24f34de08b74e80aca4999e5a5b53a843bdca0" }, "downloads": -1, "filename": "ttlser-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "43bde6d75d6bc4eeea44965faa7c937d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5", "size": 16234, "upload_time": "2019-04-04T03:50:30", "url": "https://files.pythonhosted.org/packages/12/cb/f24e7fa9c9e74dd87756b2087d2cca71bba9b2b6c9c8b8a50ab6fd44613d/ttlser-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "97e9835e0c425d4b3b58642cedd39c88", "sha256": "3c0858b7a51ba1a0a767b8765977964e9bc1df8fce698193a244eb5a57439d67" }, "downloads": -1, "filename": "ttlser-1.0.0.tar.gz", "has_sig": false, "md5_digest": "97e9835e0c425d4b3b58642cedd39c88", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24806, "upload_time": "2019-04-04T03:50:32", "url": "https://files.pythonhosted.org/packages/8e/14/cc17400bb25f6fcc3c6e7db8a85d854097a04f7e24ab984eb3263e5997bf/ttlser-1.0.0.tar.gz" } ] }