summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2009-10-13 14:45:50 +0200
committerJürg Billeter <j@bitron.ch>2009-10-13 14:50:48 +0200
commit8b5aa243feee4edd1312dade44e4116b9ff60224 (patch)
tree09fc98ca1304e144d17a3838c61012064d1546a6
parentfba61a56b650db0dbe2a8336b9ffe12d29396749 (diff)
downloadtracker-8b5aa243feee4edd1312dade44e4116b9ff60224.tar.gz
Retain resource annotations on file modification
Add tracker:isAnnotation property and mark nie:usageCounter and nao:hasTag as annotations. Fixes NB#137046.
-rw-r--r--data/ontologies/11-rdf.ontology5
-rw-r--r--data/ontologies/30-nie.ontology4
-rw-r--r--data/ontologies/31-nao.ontology3
-rw-r--r--src/libtracker-data/tracker-data-manager.c28
4 files changed, 36 insertions, 4 deletions
diff --git a/data/ontologies/11-rdf.ontology b/data/ontologies/11-rdf.ontology
index f61e351d3..172876ea9 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 91796916d..66e849541 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 db83c5771..da40255e0 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 5c3ba1ab7..e534081a4 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);