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…