- library
- semweb
- rdf_db.pl -- Core RDF database
- rdf_current_prefix/2
- rdf_prefix/2
- ns/2
- rdf_register_prefix/2
- rdf_register_prefix/3
- rdf_current_ns/2
- rdf_register_ns/2
- rdf_register_ns/3
- rdf_global_id/2
- rdf_global_object/2
- rdf_global_term/2
- rdf_meta/1
- rdf_equal/2
- lang_equal/2
- lang_matches/2
- rdf/3
- rdf/4
- rdf_has/3
- rdf_has/4
- rdf_reachable/3
- rdf_reachable/5
- rdf_subject/1
- rdf_resource/1
- rdf_assert/3
- rdf_assert/4
- rdf_retractall/3
- rdf_retractall/4
- rdf_update/4
- rdf_update/5
- rdf_member_property/2
- rdf_node/1
- rdf_bnode/1
- rdf_is_bnode/1
- rdf_is_resource/1
- rdf_is_literal/1
- rdf_current_literal/1
- rdf_literal_value/2
- rdf_source_location/2
- rdf_gc/0
- rdf_statistics/1
- rdf_current_predicate/1
- rdf_predicate_property/2
- rdf_set_predicate/2
- rdf_snapshot/1
- rdf_delete_snapshot/1
- rdf_current_snapshot/1
- rdf_transaction/1
- rdf_transaction/2
- rdf_transaction/3
- rdf_active_transaction/1
- rdf_monitor/2
- rdf_warm_indexes/0
- rdf_warm_indexes/1
- rdf_update_duplicates/0
- rdf_update_duplicates/0
- rdf_save_db/1
- rdf_save_db/2
- rdf_load_db/1
- rdf_load/1
- rdf_load/2
- rdf_file_type/2
- rdf_load_stream/3
- rdf_unload/1
- rdf_unload_graph/1
- rdf_create_graph/1
- rdf_graph/1
- rdf_source/2
- rdf_source/1
- rdf_make/0
- rdf_graph_property/2
- rdf_set_graph/2
- rdf_reset_db/0
- rdf_save/1
- rdf_save/2
- rdf_save_header/2
- rdf_graph_prefixes/2
- rdf_graph_prefixes/3
- rdf_save_footer/1
- rdf_save_subject/3
- rdf_compare/3
- rdf_match_label/3
- rdf_split_url/3
- rdf_url_namespace/2
- rdf_new_literal_map/1
- rdf_destroy_literal_map/1
- rdf_reset_literal_map/1
- rdf_insert_literal_map/3
- rdf_insert_literal_map/4
- rdf_delete_literal_map/2
- rdf_delete_literal_map/3
- rdf_find_literal_map/3
- rdf_keys_in_literal_map/3
- rdf_statistics_literal_map/2
- rdf_version/1
- rdf_set/1
- rdf_md5/2
- rdf_generation/1
- rdf_estimate_complexity/4
- rdf_debug/1
- rdf_atom_md5/3
- rdf_cache.pl -- Cache RDF triples
- rdfs.pl -- RDFS handling
- rdf_persistency.pl -- RDF persistency plugin
- rdf_litindex.pl -- Search literals
- rdf_ntriples.pl -- Process files in the RDF N-Triples format
- rdf11.pl -- RDF 1.1 API
- sparql_client.pl -- SPARQL client library
- turtle.pl -- Turtle: Terse RDF Triple Language
- rdf_turtle_write.pl -- Turtle - Terse RDF Triple Language writer
- rdf_http_plugin.pl -- RDF HTTP Plugin
- rdf_library.pl -- RDF Library Manager
- rdf_zlib_plugin.pl -- RDF compressed-data plugin
- rdf_db.pl -- Core RDF database
- semweb
- rdf_meta(+Heads)
- This directive defines the argument types of the named
predicates, which will force compile time namespace expansion
for these predicates. Heads is a coma-separated list of callable
terms. Defined argument properties are:
- :
- Argument is a goal. The goal is processed using expand_goal/2, recursively applying goal transformation on the argument.
- +
- The argument is instantiated at entry. Nothing is changed.
- -
- The argument is not instantiated at entry. Nothing is changed.
- ?
- The argument is unbound or instantiated at entry. Nothing is changed.
- @
- The argument is not changed.
- r
- The argument must be a resource. If it is a term prefix:local it is translated.
- o
- The argument is an object or resource. See rdf_global_object/2.
- t
- The argument is a term that must be translated. Expansion will translate all occurences of prefix:local appearing anywhere in the term. See rdf_global_term/2.
As it is subject to term_expansion/2, the rdf_meta/1 declaration can only be used as a directive. The directive must be processed before the definition of the predicates as well as before compiling code that uses the rdf meta-predicates. The atom
rdf_meta
is declared as an operator exported fromlibrary(semweb/rdf_db)
. Files using rdf_meta/1 must explicitely load this library.Beginning with SWI-Prolog 7.3.17, the low-level RDF interface (rdf/3, rdf_assert/3, etc.) perform runtime expansion of
Prefix:Local
terms. This eliminates the need for rdf_meta/1 for simple cases. However, runtime expansion comes at a significant overhead and having two representations for IRIs (a plain atom and a termPrefix:Local
) implies that simple operations such as comparison of IRIs no longer map to native Prolog operations such asIRI1 == IRI2
.