summaryrefslogtreecommitdiffstats
path: root/src/sord.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-03-30 02:19:52 +0000
committerDavid Robillard <d@drobilla.net>2012-03-30 02:19:52 +0000
commitff3c6fc88657d2e94847ceb00adea7597894d897 (patch)
tree95931a641722a75fb3ed306e7960f3f179680eaf /src/sord.c
parent43ee05bf7402c47e7034490bfebf08d3f57900e7 (diff)
downloadsord-ff3c6fc88657d2e94847ceb00adea7597894d897.tar.gz
sord-ff3c6fc88657d2e94847ceb00adea7597894d897.tar.bz2
sord-ff3c6fc88657d2e94847ceb00adea7597894d897.zip
Add convenient sord_search(), sord_ask(), and sord_count().
Add sord_validate tool for validating data against RDF/OWL schemas. git-svn-id: http://svn.drobilla.net/sord/trunk@211 3d64ff67-21c5-427c-a301-fe4f08042e5a
Diffstat (limited to 'src/sord.c')
-rw-r--r--src/sord.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/sord.c b/src/sord.c
index 8dc33b1..087a0c0 100644
--- a/src/sord.c
+++ b/src/sord.c
@@ -816,6 +816,44 @@ sord_find(SordModel* sord, const SordQuad pat)
return sord_iter_new(sord, cur, pat, index_order, mode, n_prefix);
}
+SordIter*
+sord_search(SordModel* model,
+ const SordNode* s,
+ const SordNode* p,
+ const SordNode* o,
+ const SordNode* g)
+{
+ SordQuad pat = { s, p, o, g };
+ return sord_find(model, pat);
+}
+
+bool
+sord_ask(SordModel* model,
+ const SordNode* s,
+ const SordNode* p,
+ const SordNode* o,
+ const SordNode* g)
+{
+ SordQuad pat = { s, p, o, g };
+ return sord_contains(model, pat);
+}
+
+uint64_t
+sord_count(SordModel* model,
+ const SordNode* s,
+ const SordNode* p,
+ const SordNode* o,
+ const SordNode* g)
+{
+ SordIter* i = sord_search(model, s, p, o, g);
+ uint64_t n = 0;
+ for (; !sord_iter_end(i); sord_iter_next(i)) {
+ ++n;
+ }
+ sord_iter_free(i);
+ return n;
+}
+
bool
sord_contains(SordModel* sord, const SordQuad pat)
{