[tracker-miners/wip/carlosg/split-dataobject-informationelement: 3/6] tracker-extract: Ensure to set nfo:hasHash property on the DataObject



commit e453e453d7c53af72d7bd1528265a13117784291
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Apr 23 17:33:07 2020 +0200

    tracker-extract: Ensure to set nfo:hasHash property on the DataObject
    
    This was kind of implied. In order to extract hash strings, explicitly
    use the nie:isStoredAs relation, even though it points to the same
    resource as of yet.

 src/tracker-extract/tracker-extract-gstreamer.c            |  7 +++++--
 src/tracker-extract/tracker-extract-mp3.c                  |  7 +++++--
 src/tracker-extract/tracker-extract-vorbis.c               | 10 ++++++++--
 .../test-extraction-data/audio/mp3-id3v2.4-1.expected.json | 14 +++++++++-----
 .../test-extraction-data/audio/mp3-id3v2.4-2.expected.json | 14 +++++++++-----
 .../test-extraction-data/audio/vorbis.expected.json        | 14 +++++++++-----
 6 files changed, 45 insertions(+), 21 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
index 8ca887691..ca61e5634 100644
--- a/src/tracker-extract/tracker-extract-gstreamer.c
+++ b/src/tracker-extract/tracker-extract-gstreamer.c
@@ -884,7 +884,7 @@ extract_metadata (MetadataExtractor      *extractor,
                g_object_unref (file);
 
                if (hash) {
-                       TrackerResource *hash_resource;
+                       TrackerResource *file_resource, *hash_resource;
                        char *hash_str;
 
                        hash_resource = tracker_resource_new (NULL);
@@ -896,7 +896,10 @@ extract_metadata (MetadataExtractor      *extractor,
 
                        tracker_resource_set_string (hash_resource, "nfo:hashAlgorithm", "gibest");
 
-                       tracker_resource_set_relation (resource, "nfo:hasHash", hash_resource);
+                       file_resource = tracker_resource_new (file_url);
+                       tracker_resource_add_take_relation (resource, "nie:isStoredAs", file_resource);
+
+                       tracker_resource_set_relation (file_resource, "nfo:hasHash", hash_resource);
 
                        g_object_unref (hash_resource);
                }
diff --git a/src/tracker-extract/tracker-extract-mp3.c b/src/tracker-extract/tracker-extract-mp3.c
index bdbeee9e5..2f8242078 100644
--- a/src/tracker-extract/tracker-extract-mp3.c
+++ b/src/tracker-extract/tracker-extract-mp3.c
@@ -2889,7 +2889,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
        }
 
        if (md.acoustid_fingerprint) {
-               TrackerResource *hash_resource;
+               TrackerResource *hash_resource, *file_resource;
 
                hash_resource = tracker_resource_new (NULL);
                tracker_resource_set_uri (hash_resource, "rdf:type", "nfo:FileHash");
@@ -2897,7 +2897,10 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
                tracker_resource_set_string (hash_resource, "nfo:hashValue", md.acoustid_fingerprint);
                tracker_resource_set_string (hash_resource, "nfo:hashAlgorithm", "chromaprint");
 
-               tracker_resource_set_relation (main_resource, "nfo:hasHash", hash_resource);
+               file_resource = tracker_resource_new (uri);
+               tracker_resource_add_take_relation (main_resource, "nie:isStoredAs", file_resource);
+
+               tracker_resource_set_relation (file_resource, "nfo:hasHash", hash_resource);
 
                g_object_unref (hash_resource);
        }
diff --git a/src/tracker-extract/tracker-extract-vorbis.c b/src/tracker-extract/tracker-extract-vorbis.c
index fbba3076d..193f8ff4a 100644
--- a/src/tracker-extract/tracker-extract-vorbis.c
+++ b/src/tracker-extract/tracker-extract-vorbis.c
@@ -314,7 +314,8 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
        }
 
        if (vd.acoustid_fingerprint) {
-               TrackerResource *hash_resource;
+               TrackerResource *hash_resource, *file_resource;
+               gchar *uri;
 
                hash_resource = tracker_resource_new (NULL);
                tracker_resource_set_uri (hash_resource, "rdf:type", "nfo:FileHash");
@@ -322,7 +323,12 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
                tracker_resource_set_string (hash_resource, "nfo:hashValue", vd.acoustid_fingerprint);
                tracker_resource_set_string (hash_resource, "nfo:hashAlgorithm", "chromaprint");
 
-               tracker_resource_set_relation (metadata, "nfo:hasHash", hash_resource);
+               uri = g_file_get_uri (file);
+               file_resource = tracker_resource_new (uri);
+               tracker_resource_add_take_relation (metadata, "nie:isStoredAs", file_resource);
+               g_free (uri);
+
+               tracker_resource_set_relation (file_resource, "nfo:hasHash", hash_resource);
 
                g_object_unref (hash_resource);
 
diff --git a/tests/functional-tests/test-extraction-data/audio/mp3-id3v2.4-1.expected.json 
b/tests/functional-tests/test-extraction-data/audio/mp3-id3v2.4-1.expected.json
index c81c6e97a..eabddc4fc 100644
--- a/tests/functional-tests/test-extraction-data/audio/mp3-id3v2.4-1.expected.json
+++ b/tests/functional-tests/test-extraction-data/audio/mp3-id3v2.4-1.expected.json
@@ -60,10 +60,14 @@
                 "tracker:referenceIdentifier": "123456"
             }
         ],
-        "nfo:hasHash": {
-            "@type": "nfo:hasHash",
-            "nfo:hashAlgorithm": "chromaprint",
-            "nfo:hashValue": "111222"
-        }
+        "nie:isStoredAs": [
+            {
+                "nfo:hasHash": {
+                    "@type": "nfo:hasHash",
+                    "nfo:hashAlgorithm": "chromaprint",
+                    "nfo:hashValue": "111222"
+                }
+            }
+        ]
     }
 }
diff --git a/tests/functional-tests/test-extraction-data/audio/mp3-id3v2.4-2.expected.json 
b/tests/functional-tests/test-extraction-data/audio/mp3-id3v2.4-2.expected.json
index d716ceb53..f937f087e 100644
--- a/tests/functional-tests/test-extraction-data/audio/mp3-id3v2.4-2.expected.json
+++ b/tests/functional-tests/test-extraction-data/audio/mp3-id3v2.4-2.expected.json
@@ -57,10 +57,14 @@
                 "tracker:referenceIdentifier": "123456"
             }
         ],
-        "nfo:hasHash": {
-            "@type": "nfo:hasHash",
-            "nfo:hashAlgorithm": "chromaprint",
-            "nfo:hashValue": "111222"
-        }
+        "nie:isStoredAs": [
+            {
+                "nfo:hasHash": {
+                    "@type": "nfo:hasHash",
+                    "nfo:hashAlgorithm": "chromaprint",
+                    "nfo:hashValue": "111222"
+                }
+            }
+        ]
     }
 }
diff --git a/tests/functional-tests/test-extraction-data/audio/vorbis.expected.json 
b/tests/functional-tests/test-extraction-data/audio/vorbis.expected.json
index 3707d5cfb..55ec43979 100644
--- a/tests/functional-tests/test-extraction-data/audio/vorbis.expected.json
+++ b/tests/functional-tests/test-extraction-data/audio/vorbis.expected.json
@@ -54,10 +54,14 @@
                 "tracker:referenceIdentifier": "123456"
             }
         ],
-        "nfo:hasHash": {
-            "@type": "nfo:hasHash",
-            "nfo:hashAlgorithm": "chromaprint",
-            "nfo:hashValue": "111222"
-        }
+        "nie:isStoredAs": [
+            {
+                "nfo:hasHash": {
+                    "nfo:hashValue": "111222",
+                    "nfo:hashAlgorithm": "chromaprint",
+                    "@type": "nfo:FileHash"
+                }
+            }
+        ]
     }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]