コード例 #1
0
ファイル: ttl_loader.c プロジェクト: N4rm0/tracker
OntologyDescription *
ttl_loader_load_description (const gchar *filename)
{
	OntologyDescription *desc;
	TrackerTurtleReader *reader;
	GError *error = NULL;

	desc = ttl_model_description_new ();


	reader = tracker_turtle_reader_new (filename, NULL);

	while (error == NULL && tracker_turtle_reader_next (reader, &error)) {
		load_description (desc,
		                  tracker_turtle_reader_get_subject (reader),
		                  tracker_turtle_reader_get_predicate (reader),
		                  tracker_turtle_reader_get_object (reader));
	}

	g_object_unref (reader);

	if (error) {
		g_message ("Turtle parse error: %s", error->message);
		g_error_free (error);
	}

	return desc;
}
コード例 #2
0
ファイル: data-validator.c プロジェクト: Codeminded/tracker
gint
main (gint argc, gchar **argv)
{
	GOptionContext *context;
	TrackerTurtleReader *reader;
	GError *error = NULL;

	g_type_init ();

	/* Translators: this messagge will apper immediately after the  */
	/* usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>     */
	context = g_option_context_new ("- Validate a turtle file against the ontology");

	/* Translators: this message will appear after the usage string */
	/* and before the list of options.                              */
	g_option_context_add_main_entries (context, entries, NULL);
	g_option_context_parse (context, &argc, &argv, NULL);

	if (!ontology_dir || !ttl_file) {
		gchar *help;

		g_printerr ("%s\n\n",
		            "Ontology directory and turtle file are mandatory");

		help = g_option_context_get_help (context, TRUE, NULL);
		g_option_context_free (context);
		g_printerr ("%s", help);
		g_free (help);

		return -1;
	}

	//"/home/ivan/devel/codethink/tracker-ssh/data/services"
	load_ontology_files (ontology_dir);

	reader = tracker_turtle_reader_new (ttl_file, NULL);

	while (error == NULL && tracker_turtle_reader_next (reader, &error)) {
		turtle_statement_handler (tracker_turtle_reader_get_subject (reader),
		                          tracker_turtle_reader_get_predicate (reader),
		                          tracker_turtle_reader_get_object (reader));
	}

	g_object_unref (reader);

	if (error) {
		g_message ("Turtle parse error: %s", error->message);
		g_error_free (error);
	}

	if (!error_flag) {
		g_debug ("%s seems OK.", ttl_file);
	}

	return 0;
}
コード例 #3
0
ファイル: data-validator.c プロジェクト: Codeminded/tracker
static void
load_ontology_files (const gchar *services_dir)
{
	GList       *files = NULL;
	GDir        *services;
	const gchar *conf_file;
	GFile       *f;
	gchar       *dir_uri, *fullpath;
	gint         counter = 0;

	f = g_file_new_for_path (services_dir);
	dir_uri = g_file_get_path (f);

	services = g_dir_open (dir_uri, 0, NULL);

	conf_file = g_dir_read_name (services);

	while (conf_file) {
		TrackerTurtleReader *reader;
		GError *error = NULL;

		if (!g_str_has_suffix (conf_file, "ontology")) {
			conf_file = g_dir_read_name (services);
			continue;
		}

		fullpath = g_build_filename (dir_uri, conf_file, NULL);

		reader = tracker_turtle_reader_new (fullpath, NULL);

		while (error == NULL && tracker_turtle_reader_next (reader, &error)) {
			turtle_load_ontology (tracker_turtle_reader_get_subject (reader),
			                      tracker_turtle_reader_get_predicate (reader),
			                      tracker_turtle_reader_get_object (reader));
		}

		g_object_unref (reader);

		if (error) {
			g_message ("Turtle parse error: %s", error->message);
			g_error_free (error);
		}

		g_free (fullpath);
		counter += 1;
		conf_file = g_dir_read_name (services);
	}

	g_dir_close (services);

	g_list_foreach (files, (GFunc) g_free, NULL);
	g_object_unref (f);
	g_free (dir_uri);
	g_debug ("Loaded %d ontologies\n", counter);
}
コード例 #4
0
ファイル: ttl_loader.c プロジェクト: N4rm0/tracker
Ontology *
ttl_loader_load_ontology (const gchar *ttl_file)
{
	Ontology *ontology;

	ontology = g_new0 (Ontology, 1);
	ontology->classes = g_hash_table_new_full (g_str_hash,
	                                           g_str_equal,
	                                           g_free,
	                                           (GDestroyNotify)ttl_model_class_free);

	ontology->properties = g_hash_table_new_full (g_str_hash,
	                                              g_str_equal,
	                                              g_free,
	                                              (GDestroyNotify)ttl_model_property_free);

	if (ttl_file) {
		TrackerTurtleReader *reader;
		GError *error = NULL;

		reader = tracker_turtle_reader_new (ttl_file, NULL);

		while (error == NULL && tracker_turtle_reader_next (reader, &error)) {
			load_in_memory (ontology,
			                tracker_turtle_reader_get_subject (reader),
			                tracker_turtle_reader_get_predicate (reader),
			                tracker_turtle_reader_get_object (reader));
		}

		g_object_unref (reader);

		if (error) {
			g_message ("Turtle parse error: %s", error->message);
			g_error_free (error);
		}
	} else {
		g_warning ("Unable to open '%s'", ttl_file);
	}

	return ontology;
}