diff options
author | Jürg Billeter <j@bitron.ch> | 2009-10-13 14:45:50 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2009-10-13 14:50:48 +0200 |
commit | 8b5aa243feee4edd1312dade44e4116b9ff60224 (patch) | |
tree | 09fc98ca1304e144d17a3838c61012064d1546a6 | |
parent | fba61a56b650db0dbe2a8336b9ffe12d29396749 (diff) | |
download | tracker-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.ontology | 5 | ||||
-rw-r--r-- | data/ontologies/30-nie.ontology | 4 | ||||
-rw-r--r-- | data/ontologies/31-nao.ontology | 3 | ||||
-rw-r--r-- | 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 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); |