--- 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)