Annotation of rpm2html/rdf_api.h, revision 1.11
1.1 veillard 1: /*
2: * rdf_api.h : interface definitions to read and write RDF schemas
1.8 veillard 3: *
4: * See Copyright for the status of this software.
5: *
1.11 ! daniel 6: * $Id: rdf_api.h,v 1.10 1998/08/06 04:28:10 daniel Exp $
1.1 veillard 7: */
8:
9: #ifndef __RDF_API_H__
10: #define __RDF_API_H__
11: #include "parser.h"
12: #include "tree.h"
13: #include "rdf.h"
14:
15: /*
16: * An RDF schema is basically an XML document.
17: */
18: typedef xmlDocPtr rdfSchema;
19:
20: /*
1.10 daniel 21: * An RDF namespace is an XML namespace/Ns
1.3 veillard 22: */
1.10 daniel 23: typedef xmlNsPtr rdfNamespace;
1.3 veillard 24:
25: /*
1.1 veillard 26: * Any RDF element is an XML element.
27: */
28: typedef xmlNodePtr rdfElement;
29:
30: /*
31: * An RDF description is an RDF element and usually
32: * a direct child of the root for simple descriptions.
33: */
34: typedef rdfElement rdfDescription;
35:
36: /*
1.3 veillard 37: * The value of an element can be either:
38: * - A piece of Text : char * RDF_LEAF
39: * - A collection tag :
40: * - Bag, RDF_BAG
41: * - Seq RDF_SEQ
42: * - Alt RDF_ALT
43: * - An rdfDescription RDF_DESC
44: */
45:
46: #define RDF_LEAF 1
47: #define RDF_BAG 2
48: #define RDF_SEQ 3
49: #define RDF_ALT 4
50: #define RDF_DESC 5
51:
52: /*
1.1 veillard 53: * An RDF Bag is and RDF element with possibly multiple child
54: */
55: typedef rdfElement rdfBag;
56:
57: /*
1.3 veillard 58: * An RDF Seq is and RDF element an enumeration of childs
1.2 veillard 59: */
1.3 veillard 60: typedef rdfElement rdfSeq;
61:
1.2 veillard 62: /*
1.1 veillard 63: * Basic routines reading/writing an RDF file.
64: */
1.3 veillard 65: rdfSchema rdfRead(const char *filename);
66: void rdfWrite(rdfSchema rdf, const char *filename);
1.6 veillard 67: void rdfWriteMemory(rdfSchema rdf, char **buffer, int *size);
1.1 veillard 68:
69: /*
70: * An RDF schema is a collection of RDF descriptions.
71: */
1.5 veillard 72: rdfSchema rdfNewSchema(void);
73: void rdfDestroySchema(rdfSchema rdf);
1.1 veillard 74: rdfDescription rdfFirstDescription(rdfSchema schema);
75: rdfDescription rdfNextDescription(rdfDescription desc);
76: rdfDescription rdfAddDescription(rdfSchema schema, const char *id,
1.9 veillard 77: const char *about);
1.7 veillard 78: char *rdfGetDescriptionId(rdfSchema schema, rdfDescription desc);
1.9 veillard 79: char *rdfGetDescriptionAbout(rdfSchema schema, rdfDescription desc);
80: char *rdfGetElementResource(rdfSchema schema, rdfElement elem);
81: #define rdfGetDescriptionHref(s, d) rdfGetDescriptionAbout((s), (d))
82: void rdfSetElementResource(rdfSchema schema, rdfElement elem, const char *URI);
1.1 veillard 83:
84: /*
1.4 veillard 85: * Namespace handling.
86: */
87: rdfNamespace rdfNewNamespace(rdfSchema rdf, const char *url, const char *ns);
88: rdfNamespace rdfGetNamespace(rdfSchema rdf, const char *href);
89: rdfNamespace rdfGetRdfNamespace(rdfSchema rdf);
90:
91: /*
1.3 veillard 92: * Routines to read/write values, which can be either final ones or
93: * subtree.
1.1 veillard 94: */
1.3 veillard 95: int rdfGetValue(rdfDescription desc, const char *property,
96: rdfNamespace ns, char **value, rdfElement *elem);
97: void rdfSetValue(rdfDescription desc, const char *property,
98: rdfNamespace ns, const char *value);
99: void rdfSetTree(rdfDescription desc, const char *property,
100: rdfNamespace ns, rdfElement elem);
101: void rdfRemoveProperty(rdfDescription desc, const char *property,
102: rdfNamespace ns);
1.1 veillard 103:
104: /*
105: * Routines to read/write bags
106: */
1.5 veillard 107: rdfBag rdfBagCreate(rdfSchema schema, rdfDescription desc,
108: const char *property, rdfNamespace ns);
109: rdfElement rdfBagAddValue(rdfBag bag, const char *property,
1.6 veillard 110: rdfNamespace ns, const char *value, rdfElement elem);
1.1 veillard 111:
112: /*
113: * Routines to walk bags and sequences.
114: */
1.4 veillard 115: rdfElement rdfFirstChild(rdfElement bag);
1.1 veillard 116: rdfElement rdfNextElem(rdfElement desc);
117:
118: /*
119: * Direct access to Element values.
120: */
1.3 veillard 121: int rdfElemGetType(rdfElement elem);
1.1 veillard 122: char *rdfElemGetValue(rdfElement elem);
1.11 ! daniel 123: char *rdfElemGetPropertyName(rdfElement elem);
1.3 veillard 124: rdfNamespace rdfElemGetNamespace(rdfElement elem);
1.1 veillard 125: void rdfElemSetValue(rdfElement elem, const char *value);
126:
127: #endif /* __RDF_API_H__ */
Webmaster