{
    "mode": "man",
    "parameter": "redland",
    "section": "3",
    "url": "https://www.chedong.com/phpMan.php/man/redland/3/json",
    "generated": "2026-06-02T12:15:30Z",
    "synopsis": "#include <redland.h>",
    "sections": {
        "NAME": {
            "content": "redland - Resource Description Framework (RDF) Library\n",
            "subsections": []
        },
        "VERSION": {
            "content": "1.0.16\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "#include <redland.h>\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "redland is a library providing support for the Resource Description Framework (RDF) written\nin ANSI C with APIs in several other languages.\n\nThis manual page lists most of the redland public API functions but does not claim to be a\ncomplete summary of the entire API.  For the complete API with full details of the function\ninterface, see the HTML API documentation either on the Redland web site at\n<http://librdf.org/> or with the software release in the docs/api directory.\n",
            "subsections": []
        },
        "FUNCTIONS": {
            "content": "The functions defined by redland are all defined with the \"librdf\" prefix\n",
            "subsections": [
                {
                    "name": "class world",
                    "content": "librdfworld* librdfnewworld(void)\nvoid librdffreeworld(librdfworld* world)\nvoid librdfworldopen(librdfworld* world)\nvoid librdfworldseterror(librdfworld* world, void* userdata, void (*errorfn)(void*\nuserdata, const char* msg, ...))\nvoid librdfworldsetwarning(librdfworld* world, void* userdata, void (*warningfn)(void*\nuserdata, const char* msg, ...))\nvoid librdfworldsetdigest(librdfworld*, const char* name)\nvoid librdfworldseturishash(librdfworld* world, librdfhash* urishash)\nconst char* librdfworldgetfeature(librdfworld* world, librdfuri* feature)\nint librdfworldsetfeature(librdfworld* world, librdfuri* feature, const char* value)\n"
                },
                {
                    "name": "class iterator",
                    "content": "librdfiterator* librdfnewiterator(librdfworld* world, void* context, int\n(*isend)(void*), void* (*getnext)(void*), void (*finished)(void*))\nvoid librdffreeiterator(librdfiterator*)\nint librdfiteratorend(librdfiterator* iterator)\nint librdfiteratorfinished(librdfiterator* iterator)\nint librdfiteratornext(librdfiterator* iterator)\nvoid* librdfiteratorgetobject(librdfiterator* iterator)\nvoid* librdfiteratorgetcontext(librdfiterator* iterator)\nvoid* librdfiteratorgetkey(librdfiterator* iterator)\nvoid* librdfiteratorgetvalue(librdfiterator* iterator)\nint librdfiteratoraddmap(librdfiterator* iterator, void* (*fn)(void* context, void*\nitem), void* context)\nvoid* librdfiteratormapremoveduplicatenodes(void* item, void* userdata)\n"
                },
                {
                    "name": "class digest",
                    "content": "void librdfdigestregisterfactory(librdfworld* world, const char* name, void (*factory)\n(librdfdigestfactory*))\nlibrdfdigestfactory* librdfgetdigestfactory(librdfworld* world, const char* name)\nlibrdfdigest* librdfnewdigest(librdfworld* world, char* name)\nlibrdfdigest* librdfnewdigestfromfactory(librdfworld* world, librdfdigestfactory*\nfactory)\nvoid librdffreedigest(librdfdigest* digest)\nvoid librdfdigestinit(librdfdigest* digest)\nvoid librdfdigestupdate(librdfdigest* digest, unsigned char* buf, sizet length)\nvoid librdfdigestfinal(librdfdigest* digest)\nvoid* librdfdigestgetdigest(librdfdigest* digest)\nchar* librdfdigesttostring(librdfdigest* digest)\nvoid librdfdigestprint(librdfdigest* digest, FILE* fh)\n"
                },
                {
                    "name": "class uri",
                    "content": "librdfuri* librdfnewuri(librdfworld* world, const unsigned char * string)\nlibrdfuri* librdfnewurifromuri(librdfuri* uri)\nlibrdfuri* librdfnewurifromurilocalname(librdfuri* uri, const unsigned char*\nlocalname)\nvoid librdffreeuri(librdfuri* uri)\nunsigned char* librdfuriasstring(librdfuri* uri)\nunsigned char* librdfuriascountedstring(librdfuri* uri, sizet* lenp)\nlibrdfdigest* librdfurigetdigest(librdfuri* uri)\nvoid librdfuriprint>(librdfuri* uri, FILE* fh)\nunsigned char* librdfuritostring(librdfuri* uri)\nunsigned char* librdfuritocountedstring(librdfuri* uri, sizet* lenp)\nint librdfuriequals(librdfuri* firsturi, librdfuri* seconduri)\nint librdfuriisfileuri(librdfuri* uri)\nconst char* librdfuritofilename(librdfuri* uri)\nlibrdfuri* librdfnewurinormalisedtobase(const unsigned char* uristring, librdfuri*\nsourceuri, librdfuri* baseuri)\nlibrdfuri* librdfnewurirelativetobase(librdfuri* baseuri, const unsigned char*\nuristring)\nlibrdfuri* librdfnewurifromfilename(librdfworld* world, const char* filename)\n"
                },
                {
                    "name": "class node",
                    "content": "librdfnode* librdfnewnode(librdfworld* world)\nlibrdfnode* librdfnewnodefromuristring(librdfworld* world, const char* string)\nlibrdfnode* librdfnewnodefromuri(librdfworld* world, librdfuri* uri)\nlibrdfnode* librdfnewnodefromurilocalname(librdfworld* world, librdfuri* uri, const\nchar* localname)\nlibrdfnode* librdfnewnodefromnormaliseduristring(librdfworld* world, const char*\nuristring, librdfuri* sourceuri, librdfuri* baseuri)\nlibrdfnode* librdfnewnodefromliteral(librdfworld* world, const char* string, const\nchar* xmllanguage, int xmlspace, int iswfxml)\nlibrdfnode* librdfnewnodefromtypedliteral(librdfworld* world, const unsigned char*\nstring, const char* xmllanguage, librdfuri* datatypeuri)\nlibrdfnode* librdfnewnodefromblankidentifier(librdfworld* world, const unsigned char*\nidentifier)\nlibrdfnode* librdfnewnodefromnode(librdfnode* node)\nvoid librdfnodeinit(librdfworld* world, librdfnode* node)\nvoid librdffreenode(librdfnode* r)\nlibrdfuri* librdfnodegeturi(librdfnode* node)\nlibrdfnodetype librdfnodegettype(librdfnode* node)\nunsigned char* librdfnodegetliteralvalue(librdfnode* node)\nunsigned char* librdfnodegetliteralvalueascountedstring(librdfnode* node, sizet*\nlenp)\nchar* librdfnodegetliteralvalueaslatin1(librdfnode* node)\nchar* librdfnodegetliteralvaluelanguage(librdfnode* node)\nint librdfnodegetliteralvalueiswfxml(librdfnode* node)\nlibrdfuri* librdfnodegetliteralvaluedatatypeuri(librdfnode* node)\nint librdfnodegetliordinal(librdfnode* node)\nunsigned char* librdfnodegetblankidentifier(librdfnode* node)\nint librdfnodeisresource(librdfnode* node)\nint librdfnodeisliteral(librdfnode* node)\nint librdfnodeisblank(librdfnode* node)\nlibrdfdigest* librdfnodegetdigest(librdfnode* node)\nsizet librdfnodeencode(librdfnode* node, unsigned char* buffer, sizet length)\nsizet librdfnodedecode(librdfnode* node, unsigned char* buffer, sizet length)\nunsigned char* librdfnodetostring(librdfnode* node)\nunsigned char* librdfnodetocountedstring(librdfnode* node, sizet* lenp)\nvoid librdfnodeprint(librdfnode* node, FILE* fh)\nint librdfnodeequals(librdfnode* firstnode, librdfnode* secondnode)\n"
                },
                {
                    "name": "class concepts",
                    "content": "The library provides macros for all of the RDF and RDFS concepts - nodes and URIs.  For\nexample, \"LIBRDFMSAlt\" for the librdfnode for the rdf:Alt concept and \"LIBRDFMSAltURI\"\nfor the librdfuri for the URI reference of rdf:Alt.\n\n\"LIBRDFURIRDFMS\" and \"LIBRDFURIRDFSCHEMA\" provide the librdfuri objects for the RDF\nand RDFS namespace URIs.  They must be copied using librdfnewurifromuri to be shared\ncorrectly.\n\nvoid librdfgetconceptbyname(librdfworld* world, int isms, const char* name, librdfuri\nurip, librdfnode nodep)\n"
                },
                {
                    "name": "class statement",
                    "content": "librdfstatement* librdfnewstatement(librdfworld* world)\nlibrdfstatement* librdfnewstatementfromstatement(librdfstatement* statement)\nlibrdfstatement* librdfnewstatementfromnodes(librdfworld* world, librdfnode* subject,\nlibrdfnode* predicate, librdfnode* object)\nvoid librdfstatementinit(librdfworld* world, librdfstatement* statement)\nvoid librdfstatementclear(librdfstatement* statement)\nvoid librdffreestatement(librdfstatement* statement)\nlibrdfnode* librdfstatementgetsubject(librdfstatement* statement)\nvoid librdfstatementsetsubject(librdfstatement* statement, librdfnode* subject)\nlibrdfnode* librdfstatementgetpredicate(librdfstatement* statement)\nvoid librdfstatementsetpredicate(librdfstatement* statement, librdfnode* predicate)\nlibrdfnode* librdfstatementgetobject(librdfstatement* statement)\nvoid librdfstatementsetobject(librdfstatement* statement, librdfnode* object)\nint librdfstatementiscomplete(librdfstatement* statement)\nchar* librdfstatementtostring(librdfstatement* statement)\nvoid librdfstatementprint(librdfstatement* statement, FILE* fh)\nint librdfstatementequals(librdfstatement* statement1, librdfstatement* statement2)\nint librdfstatementmatch(librdfstatement* statement, librdfstatement* partialstatement)\nsizet librdfstatementencode(librdfstatement* statement, unsigned char* buffer, sizet\nlength)\nsizet librdfstatementencodeparts(librdfstatement* statement, unsigned char* buffer,\nsizet length, librdfstatementpart fields)\nsizet librdfstatementdecode(librdfstatement* statement, unsigned char* buffer, sizet\nlength)\nsizet librdfstatementdecodeparts(librdfstatement* statement, librdfnode contextnode,\nunsigned char* buffer, sizet length)\n"
                },
                {
                    "name": "class model",
                    "content": "librdfmodel* librdfnewmodel(librdfworld* world, librdfstorage* storage, char*\noptionsstring)\nlibrdfmodel* librdfnewmodelwithoptions(librdfworld* world, librdfstorage* storage,\nlibrdfhash* options)\nlibrdfmodel* librdfnewmodelfrommodel(librdfmodel* model)\nvoid librdffreemodel(librdfmodel* model)\nint librdfmodelsize(librdfmodel* model)\nint librdfmodeladd(librdfmodel* model, librdfnode* subject, librdfnode* predicate,\nlibrdfnode* object)\nint librdfmodeladdstringliteralstatement(librdfmodel* model, librdfnode* subject,\nlibrdfnode* predicate, char* string, char* xmllanguage, int xmlspace, int iswfxml)\nint librdfmodeladdtypedliteralstatement(librdfmodel* model, librdfnode* subject,\nlibrdfnode* predicate, const unsigned char* string, char* xmllanguage, librdfuri*\ndatatypeuri)\nint librdfmodeladdstatement(librdfmodel* model, librdfstatement* statement)\nint librdfmodeladdstatements(librdfmodel* model, librdfstream* statementstream)\nint librdfmodelremovestatement(librdfmodel* model, librdfstatement* statement)\nint librdfmodelcontainsstatement(librdfmodel* model, librdfstatement* statement)\nint librdfmodelhasarcin(librdfmodel* model, librdfnode* node, librdfnode* property)\nint librdfmodelhasarcout(librdfmodel* model, librdfnode* node, librdfnode* property)\nlibrdfstream* librdfmodelasstream(librdfmodel* model)\nlibrdfstream* librdfmodelfindstatements(librdfmodel* model, librdfstatement* statement)\nlibrdfstream* librdfmodelfindstatementsincontext(librdfmodel* model, librdfstatement*\nstatement, librdfnode* contextnode)\nlibrdfstream* librdfmodelfindstatementswithoptions(librdfmodel* model,\nlibrdfstatement* statement, librdfnode* contextnode, librdfhash* options)\nlibrdfiterator* librdfmodelgetcontexts(librdfmodel* model)\nlibrdfiterator* librdfmodelgetsources(librdfmodel* model, librdfnode* arc, librdfnode*\ntarget)\nlibrdfiterator* librdfmodelgetarcs(librdfmodel* model, librdfnode* source, librdfnode*\ntarget)\nlibrdfiterator* librdfmodelgettargets(librdfmodel* model, librdfnode* source,\nlibrdfnode* arc)\nlibrdfnode* librdfmodelgetsource(librdfmodel* model, librdfnode* arc, librdfnode*\ntarget)\nlibrdfnode* librdfmodelgetarc(librdfmodel* model, librdfnode* source, librdfnode*\ntarget)\nlibrdfnode* librdfmodelgettarget(librdfmodel* model, librdfnode* source, librdfnode*\narc)\nlibrdfiterator* librdfmodelgetarcsin(librdfmodel* model, librdfnode* node)\nlibrdfiterator* librdfmodelgetarcsout(librdfmodel* model, librdfnode* node)\nint librdfmodeladdsubmodel(librdfmodel* model, librdfmodel* submodel)\nint librdfmodelremovesubmodel(librdfmodel* model, librdfmodel* submodel)\nvoid librdfmodelprint(librdfmodel* model, FILE* fh)\nint librdfmodelcontextaddstatement(librdfmodel* model, librdfnode* context,\nlibrdfstatement* statement)\nint librdfmodelcontextaddstatements(librdfmodel* model, librdfnode* context,\nlibrdfstream* stream)\nint librdfmodelcontextremovestatement(librdfmodel* model, librdfnode* context,\nlibrdfstatement* statement)\nint librdfmodelcontextremovestatements(librdfmodel* model, librdfnode* context)\nlibrdfstream* librdfmodelcontextasstream(librdfmodel* model, librdfnode* context)\nlibrdfstream* librdfmodelquery(librdfmodel* model, librdfquery* query)\nlibrdfstream* librdfmodelquerystring(librdfmodel* model, const char* name, librdfuri*\nuri, const unsigned char* querystring)\nvoid librdfmodelsync(librdfmodel* model)\nlibrdfstorage* librdfmodelgetstorage(librdfmodel* model)\nlibrdfnode* librdfmodelgetfeature(librdfmodel* model, librdfuri* feature) =item int\nlibrdfmodelsetfeature(librdfmodel* model, librdfuri* feature, librdfnode* value)\n"
                },
                {
                    "name": "class storage",
                    "content": "void librdfstorageregisterfactory(const char* name, void (*factory)\n(librdfstoragefactory*))\nlibrdfstorage* librdfnewstorage(librdfworld* world, char* storagename, char* name, char*\noptionsstring)\nlibrdfstorage* librdfnewstoragewithoptions(librdfworld* world, char* storagename,\nchar* name, librdfhash* options)\nlibrdfstorage* librdfnewstoragefromstorage(librdfstorage* oldstorage)\nlibrdfstorage* librdfnewstoragefromfactory(librdfworld* world, librdfstoragefactory*\nfactory, char* name, librdfhash* options)\nvoid librdffreestorage(librdfstorage* storage)\nint librdfstorageopen(librdfstorage* storage, librdfmodel* model)\nint librdfstorageclose(librdfstorage* storage)\nint librdfstorageget(librdfstorage* storage, void* key, sizet keylen, void value,\nsizet* valuelen, unsigned int flags)\nint librdfstoragesize(librdfstorage* storage)\nint librdfstorageaddstatement(librdfstorage* storage, librdfstatement* statement)\nint librdfstorageaddstatements(librdfstorage* storage, librdfstream* statementstream)\nint librdfstorageremovestatement(librdfstorage* storage, librdfstatement* statement)\nint librdfstoragecontainsstatement(librdfstorage* storage, librdfstatement* statement)\nlibrdfstream* librdfstorageserialise(librdfstorage* storage)\nlibrdfstream* librdfstoragefindstatements(librdfstorage* storage, librdfstatement*\nstatement)\nlibrdfiterator* librdfstoragegetsources(librdfstorage* storage, librdfnode* arc,\nlibrdfnode* target)\nlibrdfiterator* librdfstoragegetarcs(librdfstorage* storage, librdfnode* source,\nlibrdfnode* target)\nlibrdfiterator* librdfstoragegettargets(librdfstorage* storage, librdfnode* source,\nlibrdfnode* arc)\nlibrdfiterator* librdfstoragegetarcsin(librdfstorage* storage, librdfnode* node)\nlibrdfiterator* librdfstoragegetarcsout(librdfstorage* storage, librdfnode* node)\nint librdfstoragehasarcin(librdfstorage* storage, librdfnode* node, librdfnode*\nproperty)\nint librdfstoragehasarcout(librdfstorage* storage, librdfnode* node, librdfnode*\nproperty)\nint librdfstoragecontextaddstatement(librdfstorage* storage, librdfnode* context,\nlibrdfstatement* statement)\nint librdfstoragecontextaddstatements(librdfstorage* storage, librdfnode* context,\nlibrdfstream* stream)\nint librdfstoragecontextremovestatement(librdfstorage* storage, librdfnode* context,\nlibrdfstatement* statement)\nint librdfstoragecontextremovestatements(librdfstorage* storage, librdfnode* context)\nlibrdfstream* librdfstoragecontextasstream(librdfstorage* storage, librdfnode*\ncontext)\nint librdfstoragesupportsquery(librdfstorage* storage, librdfquery* query)\nlibrdfstream* librdfstoragequery(librdfstorage* storage, librdfquery* query)\nvoid librdfstoragesync(librdfstorage* storage)\n"
                },
                {
                    "name": "class parser",
                    "content": "void librdfparserregisterfactory(librdfworld* world, const char* name, const char*\nmimetype, const char* uristring, void (*factory) (librdfparserfactory*))\nlibrdfparser* librdfnewparser(librdfworld* world, const char* name, const char*\nmimetype, librdfuri* typeuri)\nlibrdfparser* librdfnewparserfromfactory(librdfworld* world, librdfparserfactory*\nfactory)\nvoid librdffreeparser(librdfparser* parser)\nlibrdfstream* librdfparserparseasstream(librdfparser* parser, librdfuri* uri,\nlibrdfuri* baseuri)\nint librdfparserparseintomodel(librdfparser* parser, librdfuri* uri, librdfuri*\nbaseuri, librdfmodel* model)\nlibrdfstream* librdfparserparsestringasstream(librdfparser* parser, const unsigned\nchar* string, librdfuri* baseuri)\nint librdfparserparsestringintomodel(librdfparser* parser, const unsigned char* string,\nlibrdfuri* baseuri, librdfmodel* model)\nvoid librdfparserseterror(librdfparser* parser, void* userdata, void (*errorfn)(void*\nuserdata, const char* msg, ...))\nvoid librdfparsersetwarning(librdfparser* parser, void* userdata, void\n(*warningfn)(void* userdata, const char* msg, ...))\nlibrdfnode* librdfparsergetfeature(librdfparser* parser, librdfuri* feature)\nint librdfparsersetfeature(librdfparser* parser, librdfuri* feature, librdfnode* value)\n"
                },
                {
                    "name": "class serializer",
                    "content": "librdfserializer* librdfnewserializer(librdfworld* world, const char *name, const char\n*mimetype, librdfuri *typeuri)\nlibrdfserializer* librdfnewserializerfromfactory(librdfworld* world,\nlibrdfserializerfactory *factory)\nvoid librdffreeserializer(librdfserializer *serializer)\nint librdfserializerserializemodel(librdfserializer* serializer, FILE* handle,\nlibrdfuri* baseuri, librdfmodel* model)\nint librdfserializerserializemodeltofile(librdfserializer* serializer, const char\n*name, librdfuri* baseuri, librdfmodel* model)\nvoid librdfserializerseterror(librdfserializer* serializer, void *userdata, void\n(*errorfn)(void *userdata, const char *msg, ...))\nvoid librdfserializersetwarning(librdfserializer* serializer, void *userdata, void\n(*warningfn)(void *userdata, const char *msg, ...))\nlibrdfnode* librdfserializergetfeature(librdfserializer* serializer, librdfuri*\nfeature)\nint librdfserializersetfeature(librdfserializer* serializer, librdfuri* feature,\nlibrdfnode* value)b\nint librdfserializersetnamespace(librdfserializer* serializer, librdfuri* uri, const\nchar* prefix)\n"
                },
                {
                    "name": "class stream",
                    "content": "librdfstream* librdfnewstream(librdfworld* world, void* context, int\n(*endofstream)(void*), librdfstatement* (*nextstatement)(void*), void (*finished)(void*))\nlibrdfstream* librdfnewstreamfromnodeiterator(librdfiterator* iterator,\nlibrdfstatement* statement, librdfstatementpart field)\nvoid librdffreestream(librdfstream* stream)\nint librdfstreamend(librdfstream* stream)\nint librdfstreamnext(librdfstream* stream)\nlibrdfstatement* librdfstreamgetobject(librdfstream* stream)\nvoid* librdfstreamgetcontext(librdfstream* stream)\nvoid librdfstreamsetmap(librdfstream* stream, librdfstatement* (*map)(void* context,\nlibrdfstatement* statement), void* mapcontext)\nvoid librdfstreamprint(librdfstream* stream, FILE* fh)\n"
                }
            ]
        },
        "EXAMPLES": {
            "content": "#include <redland.h>\n\nlibrdfstorage *storage;\nlibrdfmodel* model;\nlibrdfstatement* statement;\nlibrdfworld* world\n\nworld=librdfnewworld();\n\nlibrdfworldopen(world);\n\nstorage=librdfnewstorage(world, \"hashes\", \"test\", \"hash-type='bdb',dir='.'\");\nmodel=librdfnewmodel(world, storage, NULL);\nstatement=librdfnewstatementfromnodes(world, librdfnewnodefromuristring(world, \"http://purl.org/net/dajobe/\"), librdfnewnodefromuristring(world, \"http://purl.org/dc/elements/1.1/creator\"), librdfnewnodefromliteral(world, \"Dave Beckett\", NULL, 0));\n\nlibrdfmodeladdstatement(model, statement);\nlibrdffreestatement(statement);\n\nlibrdfmodelprint(model, stdout);\n\nlibrdffreemodel(model);\nlibrdffreestorage(storage);\nlibrdffreeworld(world);\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "libraptor(3), libxml(4).\n",
            "subsections": []
        },
        "HISTORY": {
            "content": "The redland RDF library was created by Dave Beckett in June 2000.\n",
            "subsections": []
        },
        "AUTHOR": {
            "content": "Dave Beckett <http://purl.org/net/dajobe/>,\n\n\n\n28-Jun-2012                                redland 1.0.16                                 redland(3)",
            "subsections": []
        }
    },
    "summary": "redland - Resource Description Framework (RDF) Library",
    "flags": [],
    "examples": [
        "#include <redland.h>",
        "librdfstorage *storage;",
        "librdfmodel* model;",
        "librdfstatement* statement;",
        "librdfworld* world",
        "world=librdfnewworld();",
        "librdfworldopen(world);",
        "storage=librdfnewstorage(world, \"hashes\", \"test\", \"hash-type='bdb',dir='.'\");",
        "model=librdfnewmodel(world, storage, NULL);",
        "statement=librdfnewstatementfromnodes(world, librdfnewnodefromuristring(world, \"http://purl.org/net/dajobe/\"), librdfnewnodefromuristring(world, \"http://purl.org/dc/elements/1.1/creator\"), librdfnewnodefromliteral(world, \"Dave Beckett\", NULL, 0));",
        "librdfmodeladdstatement(model, statement);",
        "librdffreestatement(statement);",
        "librdfmodelprint(model, stdout);",
        "librdffreemodel(model);",
        "librdffreestorage(storage);",
        "librdffreeworld(world);"
    ],
    "see_also": [
        {
            "name": "libraptor",
            "section": "3",
            "url": "https://www.chedong.com/phpMan.php/man/libraptor/3/json"
        },
        {
            "name": "libxml",
            "section": "4",
            "url": "https://www.chedong.com/phpMan.php/man/libxml/4/json"
        }
    ]
}