Hormiga quick followup
05/07/2010
Just a quick followup to yesterday’s post about hormiga having its first interesting features, the following code now works:
public class HormigaTest {
public HormigaTest () {
}
public void run () {
try {
foreach (Photo p in Photo.loadAll ()) {
if (p.tags.size != 0) {
foreach (Tag t in p.tags) {
message ("Photo %s has tag %s", p.title, t.label);
}
}
}
} catch (Error e) {
warning ("Couldn't load tags: %s", e.message);
}
}
}
public static int main (string[] args) {
var t = new HormigaTest ();
t.run ();
return 0;
}
What does that mean? We now have support for predicates pointing to other resources (here, the nao:hasTag predicate), and basic support for collections, aka multi valued predicates.
For the record, the mapping files are included below:
Photo.map
{ "Class": "nmm:Photo", "Name": "Photo", "Properties": [ { "Property": "dc:title", "Name": "title" }, { "Property": "nao:hasTag", "Range": "nao:Tag", "Name": "tags" } ] }
Tag.map
{ "Class": "nao:Tag", "Name": "Tag", "Properties": [ { "Property": "nao:prefLabel", "Name": "label" } ] }
I added a Range keyword the Property in the mapping, because sometimes you want to override the range specified in the ontology. In this case, nao:hasTag has a range of rdfs:Resource, and we want to retrieve nao:Tag objects.
PS. Dear GNOME admins, could we have some antispam mechanism on blogs.gnome.org? I’m flooded with spam for ant killing products…