#!/usr/bin/perl use DBI; my $dbh= DBI->connect("DBI:RDFStore:", "sweet", 0 ); my $query = $dbh->prepare(< WHERE (?class, , ), (?class, , ?label), (?class, , ?creator) USING rdf for , rdfs for , oiled for , daml for QUERY $query->execute(); my ($class,$label,$creator); $query->bind_columns(\$class, \$label, \$creator); while ($query->fetch()) { print "class=",$class->toString," label=".$label->toString," creator=".$creator->toString."\n"; }; $query->finish(); #or free-text (actually the RDQL syntax has to formally whether or not to use =~ and bind free-text matched to a query var) my $query = $dbh->prepare(< WHERE (?class, , %"Management"%), (?class, , ), (?class, , ?label), (?class, , ?creator) USING rdf for , rdfs for , oiled for , daml for QUERY $query->execute(); my ($class,$label,$creator); $query->bind_columns(\$class, \$label, \$creator); while ($query->fetch()) { print "freetext: class=",$class->toString," label=".$label->toString," creator=".$creator->toString."\n"; }; $query->finish(); #or with LIKE - which is a bit less efficient and using perl regex engine (but allows stemming :) my $query = $dbh->prepare(< WHERE (?class, , ), (?class, , ?label), (?class, , ?creator) AND ?label LIKE '/agement/i' USING rdf for , rdfs for , oiled for , daml for QUERY $query->execute(); my ($class,$label,$creator); $query->bind_columns(\$class, \$label, \$creator); while ($query->fetch()) { print "freetext LIKE: class=",$class->toString," label=".$label->toString," creator=".$creator->toString."\n"; }; $query->finish(); # or SQL like boolean expressions my $query = $dbh->prepare(< WHERE (?class, , ), (?class, , ?label), (?class, , ?creator) AND ( ?label LIKE '/agement/i' ) || ( ?creator eq 'raskin' ) USING rdf for , rdfs for , oiled for , daml for QUERY $query->execute(); my ($class,$label,$creator); $query->bind_columns(\$class, \$label, \$creator); while ($query->fetch()) { print "SQL-ish: class=",$class->toString," label=".$label->toString," creator=".$creator->toString."\n"; }; $query->finish(); # or if you have your daml/ subdir with your ontologies already in my $dbh1= DBI->connect("DBI:RDFStore:database=daml", "sweet", 0 ); my $query = $dbh1->prepare(<, ), (?class, , ?label), (?class, , ?creator) AND ( ?label LIKE '/agement/i' ) || ( ?creator eq 'raskin' ) USING rdf for , rdfs for , oiled for , daml for QUERY $query->execute(); my ($class,$label,$creator); $query->bind_columns(\$class, \$label, \$creator); while ($query->fetch()) { print "stored SQL-ish: class=",$class->toString," label=".$label->toString," creator=".$creator->toString."\n"; }; $query->finish();