author | Elodie Thieblin <ethieblin@logilab.fr> |
Tue, 10 Mar 2020 23:44:45 +0100 | |
changeset 12910 | c87c3943d6ab |
parent 12892 | 0df0db725f07 |
permissions | -rw-r--r-- |
12891
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
1 |
# -*- coding: utf-8 -*- |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
2 |
# copyright 2019 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
3 |
# contact http://www.logilab.fr -- mailto:contact@logilab.fr |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
4 |
# |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
5 |
# This program is free software: you can redistribute it and/or modify it under |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
6 |
# the terms of the GNU Lesser General Public License as published by the Free |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
7 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
8 |
# any later version. |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
9 |
# |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
10 |
# This program is distributed in the hope that it will be useful, but WITHOUT |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
11 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
12 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
13 |
# details. |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
14 |
# |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
15 |
# You should have received a copy of the GNU Lesser General Public License |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
16 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
17 |
|
12910
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
18 |
from rdflib import plugin, namespace |
12891
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
19 |
import rdflib_jsonld # noqa |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
20 |
|
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
21 |
plugin.register("jsonld", plugin.Serializer, "rdflib_jsonld.serializer", "JsonLDSerializer") |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
22 |
|
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
23 |
RDF_MIMETYPE_TO_FORMAT = { |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
24 |
'application/rdf+xml': 'xml', |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
25 |
'text/turtle': 'turtle', |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
26 |
'text/n3': 'n3', |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
27 |
'application/n-quads': 'nquads', |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
28 |
'application/n-triples': 'nt', |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
29 |
'application/trig': 'trig', |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
30 |
'application/ld+json': 'json-ld', |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
31 |
} |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
32 |
|
12892
0df0db725f07
[rdf] Add a basic foaf adapter for CWUser
Simon Chabot <simon.chabot@logilab.fr>
parents:
12891
diff
changeset
|
33 |
NAMESPACES = { |
12910
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
34 |
"rdf": namespace.RDF, |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
35 |
"rdfs": namespace.RDFS, |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
36 |
"owl": namespace.OWL, |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
37 |
"xsd": namespace.XSD, |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
38 |
"skos": namespace.SKOS, |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
39 |
"void": namespace.VOID, |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
40 |
"dc": namespace.DC, |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
41 |
"dcterms": namespace.DCTERMS, |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
42 |
"foaf": namespace.FOAF, |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
43 |
"doap": namespace.DOAP, |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
44 |
"schema": namespace.Namespace("http://schema.org/"), |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
45 |
"cubicweb": namespace.Namespace("http://ns.cubicweb.org/cubicweb/0.0/") |
12891
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
46 |
} |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
47 |
|
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
48 |
|
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
49 |
def add_entity_to_graph(graph, entity): |
12910
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
50 |
adapter = entity.cw_adapt_to("rdf") |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
51 |
if adapter: |
12891
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
52 |
for triple in adapter.triples(): |
eb0cd6060062
[rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr>
parents:
diff
changeset
|
53 |
graph.add(triple) |
12910
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
54 |
for prefix, rdfns in adapter.used_namespaces.items(): |
c87c3943d6ab
[entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr>
parents:
12892
diff
changeset
|
55 |
graph.bind(prefix, rdfns) |