diff -r 0df0db725f07 -r c87c3943d6ab cubicweb/rdf.py --- a/cubicweb/rdf.py Fri Feb 28 17:11:01 2020 +0100 +++ b/cubicweb/rdf.py Tue Mar 10 23:44:45 2020 +0100 @@ -15,8 +15,7 @@ # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . -from rdflib import ConjunctiveGraph, plugin -from rdflib.namespace import Namespace, RDF, FOAF +from rdflib import plugin, namespace import rdflib_jsonld # noqa plugin.register("jsonld", plugin.Serializer, "rdflib_jsonld.serializer", "JsonLDSerializer") @@ -32,35 +31,25 @@ } NAMESPACES = { - "rdf": RDF, - "schema": Namespace("http://schema.org/"), - "foaf": FOAF, -} - - -# dict: name of CWEType -> list of regid of adapters derived from EntityRDFAdapter -ETYPES_ADAPTERS = { - "CWUser": ("rdf.foaf",), + "rdf": namespace.RDF, + "rdfs": namespace.RDFS, + "owl": namespace.OWL, + "xsd": namespace.XSD, + "skos": namespace.SKOS, + "void": namespace.VOID, + "dc": namespace.DC, + "dcterms": namespace.DCTERMS, + "foaf": namespace.FOAF, + "doap": namespace.DOAP, + "schema": namespace.Namespace("http://schema.org/"), + "cubicweb": namespace.Namespace("http://ns.cubicweb.org/cubicweb/0.0/") } -def conjunctive_graph(): - """factory to build a ``ConjunctiveGraph`` and bind all namespaces - """ - graph = ConjunctiveGraph() - for prefix, rdfns in NAMESPACES.items(): - graph.bind(prefix, rdfns) - return graph - - -def iter_rdf_adapters(entity): - for adapter_id in ETYPES_ADAPTERS.get(entity.__regid__, ()): - adapter = entity.cw_adapt_to(adapter_id) - if adapter: - yield adapter - - def add_entity_to_graph(graph, entity): - for adapter in iter_rdf_adapters(entity): + adapter = entity.cw_adapt_to("rdf") + if adapter: for triple in adapter.triples(): graph.add(triple) + for prefix, rdfns in adapter.used_namespaces.items(): + graph.bind(prefix, rdfns)