Did you know ... Search Documentation:
rdf_library.pl -- RDF Library Manager
PublicShow source

This module manages an ontology library. Such a library consists of a directory with manifest files named Manifest.rdf or Manifest.ttl (Turtle). The manifest files define ontologies appearing in the library as well as namespace mnemonics and dependencies.

The typical usage scenario is

?- rdf_attach_library('/some/directory').
?- rdf_load_library(my_ontology).
- Jan Wielemaker
To be done
- Add caching info
- Allow using Manifests on HTTP servers
Source rdf_load_library(+Id) is det
Source rdf_load_library(+Id, +Options) is det
Load ontologies from the library. A library must first be attached using rdf_attach_library/1. Defined Options are:
If true (default), also load ontologies that are explicitely imported.
BaseURI used for loading RDF. Local definitions in ontologies overrule this option.
URL from which we claim to have loaded the data.
The system does a pre-check for the existence of all references RDF databases. If Level is error it reports missing databases as an error and fails. If warning it prints them, but continues. If silent, no checks are preformed. Default is error.
Perform the load concurrently using N threads. If not specified, the number is determined by guess_concurrency/2.
If false, to all the preparation, but do not execute the actual loading. See also rdf_list_library/2.
Source rdf_library_source(+Id, -Source) is nondet
True of Source is the URL that is part of the given library Id. This predicate finds all indirect dependencies. It does not check whether the source exists or is valid.
See also
- uri_file_name/2 for converting file:// URLs to a filename.
Source find_conflicts(+LoadCommands) is semidet[private]
Find possibly conflicting options for loading the same source
Source no_source_with_different_options(+Commands) is semidet[private]
True if there are not multiple calls to load the same graph, but with different load-options. Prints a warning and fails otherwise.
Source no_sources_in_same_graph(+Commands) is semidet[private]
True if there are not two load commands referring to the same graph.
Source check_existence(+CommandsIn, -Commands, +Options) is det[private]
Report existence errors. Fail if at least one source does not exist. and the not_found level is not silent.
- existence_error(urls, ListOfUrls)
Source guess_concurrency(+Commands, -Threads) is det[private]
How much concurrency to use? Set to the number of CPUs if all input comes from files or 5 if network based loading is demanded.
Source load_commands(+Id, +Options, -Pairs:list(Level-Command)) is det[private]
Commands are the RDF commands to execute for rdf_load_library/2. Splitting in command collection and execution allows for concurrent execution as well as forward checking of possible problems.
To be done
- Fix poor style; avoid assert/retract.
Source import(+URL, +Level, +Options) is det[private]
Source rdf_list_library(+Id) is det
Source rdf_list_library(+Id, +Options) is det
Print library dependency tree to the terminal. Options include options for rdf_load_library/2 and
If true (default), show location we are loading
If true (default false), show name of graph
If false (default true), do not show virtual repositories.
Atom repeated for indentation levels
Source rdf_list_library
Prints known RDF library identifiers to current output.
Source rdf_library_index(?Id, ?Facet) is nondet
Query the content of the library. Defined facets are:
Location from which to load the ontology
Title used for the ontology
Additional comments for the ontology
Version information on the ontology
imports(Type, URL)
URLs needed by this ontology. May succeed multiple times. Type is one of ontology, schema or instances.
Base URI to use when loading documents. If BaseURI ends in /, the actual filename is attached.
URL from which we claim to have loaded the RDF. If Source ends in /, the actual filename is attached.
Defines how equivalent blank nodes are handled, where Share is one of share or noshare. Default is to share.
Format of the resource. Can be used to overrule if the format as derived from the HTTP content type is wrong.
Ontology provides definitions in the namespace URL. The formal definition of this is troublesome, but in practice it means the ontology has triples whose subjects are in the given namespace.
The ontology depends on the given namespace. Normally means it contains triples that have predicates or objects in the given namespace.
URL of the manifest in which this ontology is defined.
Entry is virtual (cannot be loaded)
Source rdf_attach_library(+Source)
Attach manifest from Source. Source is one of
Load single manifest from this URL
Load single manifest from this file
Scan all subdirectories and load all Manifest.ttl or Manifest.rdf found. If Directory is a path-alias (e.g., ontology(.)), all referenced directories are scanned for manifest files.

Encountered namespaces are registered using rdf_register_ns/2. Encountered ontologies are added to the index. If a manifest was already loaded it will be reloaded if the modification time has changed.

Source rdf_update_library_index[private]
Reload all Manifest files.
Source process_manifest(+Location) is det[private]
Process a manifest file, registering encountered namespaces and creating clauses for library/3. No op if manifest was loaded and not changed. Removes old data if the manifest was changed.
Location- is either a path name or a URL.
Source extract_namespace(+Triples, -Mnemonic, -NameSpace)[private]
True if Mnemonic is an abbreviation of NameSpace.
Source extract_ontology(+Triples, -Ontology) is nondet[private]
Extract definition of an ontology
Source facet(+Triples, +File, -Facet) is nondet[private]
Enumerate facets about File from Triples. Facets are described with rdf_library_index/2.
Source edge(+Triples, ?S, ?P, ?O) is nondet[private]
Like rdf_has/3 over a list of Triples.
Source source_time(+Source, -Modified) is semidet[private]
Modified is the last modification time of Source.
- existence_error(Type, Source).
Source read_triples(+URL, -Triples) is det[private]
Read RDF/XML or Turtle file into a list of triples.
Source assert_ontology(+Manifest, +Term:library(Name,File,Facets)) is det[private]
Add ontology to our library.
To be done
- Proper behaviour of re-definition?
Source library(?Id, ?URL, ?Facets)[private]
Access DB for library information.
Source normalize_url(+URL, -Normalized)[private]
Like uri_normalized/2, but we also need (platform dependent) filename canonization.
Source define_namespace(NS:ns(Mnemonic,Namespace)) is det[private]
Add namespace declaration for Mnemonic.
Source rdf_current_manifest(-URL) is nondet
True if URL is the URL of a currently loaded manifest file.

Undocumented predicates

The following predicates are exported, but not or incorrectly documented.

Source rdf_list_library(Arg1, Arg2)
Source rdf_load_library(Arg1, Arg2)