[tracker] Retain resource annotations on file modification



commit 8b5aa243feee4edd1312dade44e4116b9ff60224
Author: Jürg Billeter <j bitron ch>
Date:   Tue Oct 13 14:45:50 2009 +0200

    Retain resource annotations on file modification
    
    Add tracker:isAnnotation property and mark nie:usageCounter and
    nao:hasTag as annotations.
    
    Fixes NB#137046.

 data/ontologies/11-rdf.ontology            |    5 +++++
 data/ontologies/30-nie.ontology            |    4 +++-
 data/ontologies/31-nao.ontology            |    3 ++-
 src/libtracker-data/tracker-data-manager.c |   28 ++++++++++++++++++++++++++--
 4 files changed, 36 insertions(+), 4 deletions(-)
---
diff --git a/data/ontologies/11-rdf.ontology b/data/ontologies/11-rdf.ontology
index f61e351..172876e 100644
--- a/data/ontologies/11-rdf.ontology
+++ b/data/ontologies/11-rdf.ontology
@@ -85,6 +85,11 @@ tracker:transient a rdf:Property ;
 	rdfs:domain rdf:Property ;
 	rdfs:range xsd:boolean .
 
+tracker:isAnnotation a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:boolean .
+
 tracker:added a rdf:Property ;
 	nrl:maxCardinality 1 ;
 	rdfs:domain rdfs:Resource ;
diff --git a/data/ontologies/30-nie.ontology b/data/ontologies/30-nie.ontology
index 9179691..66e8495 100644
--- a/data/ontologies/30-nie.ontology
+++ b/data/ontologies/30-nie.ontology
@@ -235,4 +235,6 @@ nie:rootElementOf a rdf:Property ;
 nie:usageCounter a rdf:Property ;
 	nrl:maxCardinality 1 ;
 	rdfs:domain nie:InformationElement ;
-	rdfs:range xsd:integer.
+	rdfs:range xsd:integer ;
+	tracker:isAnnotation true .
+
diff --git a/data/ontologies/31-nao.ontology b/data/ontologies/31-nao.ontology
index db83c57..da40255 100644
--- a/data/ontologies/31-nao.ontology
+++ b/data/ontologies/31-nao.ontology
@@ -20,7 +20,8 @@ nao:prefLabel a rdf:Property ;
 nao:hasTag a rdf:Property ;
 	rdfs:domain rdfs:Resource ;
 	rdfs:range rdfs:Resource ;
-	tracker:indexed true .
+	tracker:indexed true ;
+	tracker:isAnnotation true .
 
 nao:identifier a rdf:Property ;
 	nrl:maxCardinality 1 ;
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 5c3ba1a..e534081 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -223,6 +223,18 @@ load_ontology_file_from_path (const gchar	 *ontology_file)
 			if (g_strcmp0 (object, "true") == 0) {
 				tracker_property_set_transient (property, TRUE);
 			}
+		} else if (g_strcmp0 (predicate, TRACKER_PREFIX "isAnnotation") == 0) {
+			TrackerProperty *property;
+
+			property = tracker_ontology_get_property_by_uri (subject);
+			if (property == NULL) {
+				g_critical ("%s: Unknown property %s", ontology_file, subject);
+				continue;
+			}
+
+			if (g_strcmp0 (object, "true") == 0) {
+				tracker_property_set_embedded (property, FALSE);
+			}
 		} else if (g_strcmp0 (predicate, TRACKER_PREFIX "fulltextIndexed") == 0) {
 			TrackerProperty *property;
 
@@ -417,7 +429,8 @@ db_get_static_data (TrackerDBInterface *iface)
 						      "\"nrl:maxCardinality\", "
 						      "\"tracker:indexed\", "
 						      "\"tracker:fulltextIndexed\", "
-						      "\"tracker:transient\" "
+						      "\"tracker:transient\", "
+						      "\"tracker:isAnnotation\" "
 						      "FROM \"rdf:Property\" ORDER BY ID");
 	cursor = tracker_db_statement_start_cursor (stmt, NULL);
 	g_object_unref (stmt);
@@ -429,7 +442,7 @@ db_get_static_data (TrackerDBInterface *iface)
 			TrackerProperty *property;
 			const gchar     *uri, *domain_uri, *range_uri;
 			gboolean         multi_valued, indexed, fulltext_indexed;
-			gboolean         transient = FALSE;
+			gboolean         transient, annotation;
 
 			property = tracker_property_new ();
 
@@ -478,6 +491,16 @@ db_get_static_data (TrackerDBInterface *iface)
 				transient = FALSE;
 			}
 
+			tracker_db_cursor_get_value (cursor, 7, &value);
+
+			if (G_VALUE_TYPE (&value) != 0) {
+				annotation = (g_value_get_int (&value) == 1);
+				g_value_unset (&value);
+			} else {
+				/* NULL */
+				annotation = FALSE;
+			}
+
 			tracker_property_set_transient (property, transient);
 			tracker_property_set_uri (property, uri);
 			tracker_property_set_domain (property, tracker_ontology_get_class_by_uri (domain_uri));
@@ -485,6 +508,7 @@ db_get_static_data (TrackerDBInterface *iface)
 			tracker_property_set_multiple_values (property, multi_valued);
 			tracker_property_set_indexed (property, indexed);
 			tracker_property_set_fulltext_indexed (property, fulltext_indexed);
+			tracker_property_set_embedded (property, !annotation);
 			property_add_super_properties_from_db (iface, property);
 			tracker_ontology_add_property (property);
 



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