cubicweb/rdf.py
changeset 12910 c87c3943d6ab
parent 12892 0df0db725f07
--- 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 <http://www.gnu.org/licenses/>.
 
-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)