summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2022-07-11 20:31:09 +0200
committerCarlos Garnacho <carlosg@gnome.org>2023-01-10 13:02:31 +0100
commitaa67cc737a82660c69dfed2d7da7ea7ac4960527 (patch)
tree669bf7053533a89cbb16307a6e9ab292b49b1c3d
parentaf89f12b1547ff0d7f01286495c545a63aa1bf29 (diff)
downloadtracker-aa67cc737a82660c69dfed2d7da7ea7ac4960527.tar.gz
libtracker-sparql: Integrate JSON-LD serializers and deserializers in API
Add a new TRACKER_RDF_FORMAT_JSON_LD TrackerRdfFormat enum value, and use the serializer/deserializer objects for those, so that this new value is accepted in all API that takes this enum.
-rw-r--r--src/libtracker-sparql/direct/tracker-direct-statement.c2
-rw-r--r--src/libtracker-sparql/direct/tracker-direct.c2
-rw-r--r--src/libtracker-sparql/remote/tracker-http-module.c1
-rw-r--r--src/libtracker-sparql/tracker-deserializer.c5
-rw-r--r--src/libtracker-sparql/tracker-endpoint-http.c1
-rw-r--r--src/libtracker-sparql/tracker-enums-private.h1
-rw-r--r--src/libtracker-sparql/tracker-enums.h4
-rw-r--r--src/libtracker-sparql/tracker-resource.c2
-rw-r--r--src/libtracker-sparql/tracker-serializer.c4
9 files changed, 22 insertions, 0 deletions
diff --git a/src/libtracker-sparql/direct/tracker-direct-statement.c b/src/libtracker-sparql/direct/tracker-direct-statement.c
index 36ff5d198..1f4f695a8 100644
--- a/src/libtracker-sparql/direct/tracker-direct-statement.c
+++ b/src/libtracker-sparql/direct/tracker-direct-statement.c
@@ -192,6 +192,8 @@ convert_format (TrackerRdfFormat format)
return TRACKER_SERIALIZER_FORMAT_TTL;
case TRACKER_RDF_FORMAT_TRIG:
return TRACKER_SERIALIZER_FORMAT_TRIG;
+ case TRACKER_RDF_FORMAT_JSON_LD:
+ return TRACKER_SERIALIZER_FORMAT_JSON_LD;
default:
g_assert_not_reached ();
}
diff --git a/src/libtracker-sparql/direct/tracker-direct.c b/src/libtracker-sparql/direct/tracker-direct.c
index a84bc3990..ab97a90bb 100644
--- a/src/libtracker-sparql/direct/tracker-direct.c
+++ b/src/libtracker-sparql/direct/tracker-direct.c
@@ -220,6 +220,8 @@ convert_format (TrackerRdfFormat format)
return TRACKER_SERIALIZER_FORMAT_TTL;
case TRACKER_RDF_FORMAT_TRIG:
return TRACKER_SERIALIZER_FORMAT_TRIG;
+ case TRACKER_RDF_FORMAT_JSON_LD:
+ return TRACKER_SERIALIZER_FORMAT_JSON_LD;
default:
g_assert_not_reached ();
}
diff --git a/src/libtracker-sparql/remote/tracker-http-module.c b/src/libtracker-sparql/remote/tracker-http-module.c
index 0c6c17dc7..ed87cd1b7 100644
--- a/src/libtracker-sparql/remote/tracker-http-module.c
+++ b/src/libtracker-sparql/remote/tracker-http-module.c
@@ -40,6 +40,7 @@ static const gchar *mimetypes[] = {
"application/sparql-results+xml",
"text/turtle",
"application/trig",
+ "application/ld+json",
};
G_STATIC_ASSERT (G_N_ELEMENTS (mimetypes) == TRACKER_N_SERIALIZER_FORMATS);
diff --git a/src/libtracker-sparql/tracker-deserializer.c b/src/libtracker-sparql/tracker-deserializer.c
index b1ea33331..0b0d4f8bf 100644
--- a/src/libtracker-sparql/tracker-deserializer.c
+++ b/src/libtracker-sparql/tracker-deserializer.c
@@ -24,6 +24,7 @@
#include "tracker-deserializer.h"
#include "tracker-deserializer-turtle.h"
#include "tracker-deserializer-json.h"
+#include "tracker-deserializer-json-ld.h"
#include "tracker-deserializer-xml.h"
#include "tracker-private.h"
@@ -181,6 +182,8 @@ tracker_deserializer_new (GInputStream *stream,
return tracker_deserializer_turtle_new (stream, namespaces);
case TRACKER_SERIALIZER_FORMAT_TRIG:
return tracker_deserializer_trig_new (stream, namespaces);
+ case TRACKER_SERIALIZER_FORMAT_JSON_LD:
+ return tracker_deserializer_json_ld_new (stream, namespaces);
default:
g_warn_if_reached ();
return NULL;
@@ -197,6 +200,8 @@ pick_format_for_file (GFile *file)
if (g_str_has_suffix (uri, ".trig"))
format = TRACKER_SERIALIZER_FORMAT_TRIG;
+ if (g_str_has_suffix (uri, ".jsonld"))
+ format = TRACKER_SERIALIZER_FORMAT_JSON_LD;
g_free (uri);
diff --git a/src/libtracker-sparql/tracker-endpoint-http.c b/src/libtracker-sparql/tracker-endpoint-http.c
index 52a19458e..e38bb78bb 100644
--- a/src/libtracker-sparql/tracker-endpoint-http.c
+++ b/src/libtracker-sparql/tracker-endpoint-http.c
@@ -64,6 +64,7 @@ const gchar *supported_formats[] = {
"http://www.w3.org/ns/formats/SPARQL_Results_XML",
"http://www.w3.org/ns/formats/Turtle",
"http://www.w3.org/ns/formats/TriG",
+ "http://www.w3.org/ns/formats/JSON-LD",
};
G_STATIC_ASSERT (G_N_ELEMENTS (supported_formats) == TRACKER_N_SERIALIZER_FORMATS);
diff --git a/src/libtracker-sparql/tracker-enums-private.h b/src/libtracker-sparql/tracker-enums-private.h
index e1b0792ae..fe38150f2 100644
--- a/src/libtracker-sparql/tracker-enums-private.h
+++ b/src/libtracker-sparql/tracker-enums-private.h
@@ -28,6 +28,7 @@ typedef enum
TRACKER_SERIALIZER_FORMAT_XML, /* application/sparql-results+xml */
TRACKER_SERIALIZER_FORMAT_TTL, /* text/turtle */
TRACKER_SERIALIZER_FORMAT_TRIG, /* application/trig */
+ TRACKER_SERIALIZER_FORMAT_JSON_LD, /* application/ld+json */
TRACKER_N_SERIALIZER_FORMATS
} TrackerSerializerFormat;
diff --git a/src/libtracker-sparql/tracker-enums.h b/src/libtracker-sparql/tracker-enums.h
index 15bbde537..f0f41f5ea 100644
--- a/src/libtracker-sparql/tracker-enums.h
+++ b/src/libtracker-sparql/tracker-enums.h
@@ -28,6 +28,9 @@
* ([http://www.w3.org/ns/formats/Turtle](http://www.w3.org/ns/formats/Turtle))
* @TRACKER_RDF_FORMAT_TRIG: Trig format
* ([http://www.w3.org/ns/formats/Trig](http://www.w3.org/ns/formats/Trig))
+ * @TRACKER_RDF_FORMAT_JSON_LD: JSON-LD format
+ * ([http://www.w3.org/ns/formats/JSON-LD](http://www.w3.org/ns/formats/JSON-LD)).
+ * This value was added in version 3.5.
* @TRACKER_N_RDF_FORMATS: The total number of RDF formats
*
* Describes a RDF format to be used in data exchange.
@@ -35,6 +38,7 @@
typedef enum {
TRACKER_RDF_FORMAT_TURTLE,
TRACKER_RDF_FORMAT_TRIG,
+ TRACKER_RDF_FORMAT_JSON_LD,
TRACKER_N_RDF_FORMATS
} TrackerRdfFormat;
diff --git a/src/libtracker-sparql/tracker-resource.c b/src/libtracker-sparql/tracker-resource.c
index d3bde29ad..ff55d8ae8 100644
--- a/src/libtracker-sparql/tracker-resource.c
+++ b/src/libtracker-sparql/tracker-resource.c
@@ -1684,6 +1684,8 @@ convert_format (TrackerRdfFormat format)
return TRACKER_SERIALIZER_FORMAT_TTL;
case TRACKER_RDF_FORMAT_TRIG:
return TRACKER_SERIALIZER_FORMAT_TRIG;
+ case TRACKER_RDF_FORMAT_JSON_LD:
+ return TRACKER_SERIALIZER_FORMAT_JSON_LD;
case TRACKER_N_RDF_FORMATS:
g_assert_not_reached ();
}
diff --git a/src/libtracker-sparql/tracker-serializer.c b/src/libtracker-sparql/tracker-serializer.c
index a95961d92..f6a72f9fd 100644
--- a/src/libtracker-sparql/tracker-serializer.c
+++ b/src/libtracker-sparql/tracker-serializer.c
@@ -23,6 +23,7 @@
#include "tracker-serializer.h"
#include "tracker-serializer-json.h"
+#include "tracker-serializer-json-ld.h"
#include "tracker-serializer-trig.h"
#include "tracker-serializer-turtle.h"
#include "tracker-serializer-xml.h"
@@ -165,6 +166,9 @@ tracker_serializer_new (TrackerSparqlCursor *cursor,
case TRACKER_SERIALIZER_FORMAT_TRIG:
type = TRACKER_TYPE_SERIALIZER_TRIG;
break;
+ case TRACKER_SERIALIZER_FORMAT_JSON_LD:
+ type = TRACKER_TYPE_SERIALIZER_JSON_LD;
+ break;
default:
g_warn_if_reached ();
return NULL;