This module manages an ontology library. Such a library consists of a
directory with manifest files named
(Turtle). The manifest files define ontologies appearing in the library
as well as namespace mnemonics and dependencies.
The typical usage scenario is
- - Jan Wielemaker
- To be done
- - Add caching info
- - Allow using Manifests on HTTP servers
- rdf_load_library(+Id) is det
- 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:
true (default), also load ontologies that are
- 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
it reports missing databases as an error and fails.
warning it prints them, but continues. If
silent, no checks are preformed. Default is
- Perform the load concurrently using N threads. If not
specified, the number is determined by
- load +Bool
false, to all the preparation, but do not execute
the actual loading. See also rdf_list_library/2.
- 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.
- find_conflicts(+LoadCommands) is semidet[private]
- Find possibly conflicting options for loading the same 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
- no_sources_in_same_graph(+Commands) is semidet[private]
- True if there are not two load commands referring to the same
- 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
- 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
- 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
- To be done
- - Fix poor style; avoid assert/retract.
- import(+URL, +Level, +Options) is det[private]
- rdf_list_library(+Id) is det
- rdf_list_library(+Id, +Options) is det
- Print library dependency tree to the terminal. Options include
options for rdf_load_library/2 and
true (default), show location we are loading
false), show name of graph
true), do not show virtual
- Atom repeated for indentation levels
- Prints known RDF library identifiers to current output.
- 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
- Base URI to use when loading documents. If BaseURI
/, the actual filename is attached.
- URL from which we claim to have loaded the RDF. If
Source ends in
/, the actual filename is
- Defines how equivalent blank nodes are handled, where
Share is one of
noshare. Default is to
- Format of the resource. Can be used to overrule
if the format as derived from the HTTP content type
- 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)
- 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.rdf found. If Directory is a path-alias
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
- Reload all Manifest files.
- 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.|
- extract_namespace(+Triples, -Mnemonic, -NameSpace)[private]
- True if Mnemonic is an abbreviation of NameSpace.
- extract_ontology(+Triples, -Ontology) is nondet[private]
- Extract definition of an ontology
- facet(+Triples, +File, -Facet) is nondet[private]
- Enumerate facets about File from Triples. Facets are described
- edge(+Triples, ?S, ?P, ?O) is nondet[private]
- Like rdf_has/3 over a list of Triples.
- source_time(+Source, -Modified) is semidet[private]
- Modified is the last modification time of Source.
- read_triples(+URL, -Triples) is det[private]
- Read RDF/XML or Turtle file into a list of triples.
- assert_ontology(+Manifest, +Term:library(Name,File,Facets)) is det[private]
- Add ontology to our library.
- To be done
- - Proper behaviour of re-definition?
- library(?Id, ?URL, ?Facets)[private]
- Access DB for library information.
- normalize_url(+URL, -Normalized)[private]
- Like uri_normalized/2, but we also need (platform dependent)
- define_namespace(NS:ns(Mnemonic,Namespace)) is det[private]
- Add namespace declaration for Mnemonic.
- rdf_current_manifest(-URL) is nondet
- True if URL is the URL of a currently loaded manifest file.
The following predicates are exported, but not or incorrectly documented.
- rdf_load_library(Arg1, Arg2)
- rdf_list_library(Arg1, Arg2)