prefixmaps.datamodel package
Submodules
prefixmaps.datamodel.context module
Classes for managing individual Contexts.
- class prefixmaps.datamodel.context.Context(name, description=None, prefix_expansions=<factory>, comments=None, location=None, format=None, merged_from=None, upper=None, lower=None, _prefixes=<factory>, _prefixes_lower=<factory>, _namespaces=<factory>, _namespaces_lower=<factory>)
Bases:
object
A context is a localized collection of prefix expansions.
A context should be internally consistent:
the set of canonical PrefixExpansions should be bijective
However, there is no guarantee that a context is consistent with other contexts.
- add_prefix(prefix, namespace, status=StatusType.canonical, preferred=False, expansion_source=None, force=False)
Adds a prefix expansion to this context.
The current context stays canonical. Additional prefixes added may be classified as non-canonical.
If upper or lower is set for this context, the prefix will be auto-case normalized, UNLESS preferred=True
- Parameters:
prefix (
str
) – prefix to be addednamespace (
str
) – namespace to be addedstatus (
StatusType
) – the status of the prefix being addedpreferred (
bool
) –expansion_source (
Optional
[str
]) – An optional annotation to be used when merging contexts together. The source will keep track of the original context that a given prefix expansion came from. This is used inContext.combine()
.force (
bool
) – if True, recompute namespaces and prefixes. default False.
- Returns:
- as_converter()
Get a converter from this prefix map.
- Return type:
Converter
- Returns:
- as_dict()
Returns a mapping between canonical prefixes and expansions.
This only includes canonical expansions. The results can be safely used in the header of RDF syntax documents.
- Return type:
Mapping
[str
,str
]- Returns:
Mappings between prefixes and namespaces
- as_extended_prefix_map()
Return an extended prefix, appropriate for generating a
curies.Converter
.An extended prefix map is a collection of dictionaries, each of which has the following fields: :rtype:
List
[Record
]prefix
- the canonical prefixuri_prefix
- the canonical URI prefix (i.e. namespace)prefix_synonyms
- optional extra prefixes such as capitialization variants. No prefix synonyms are allowed to be duplicate across any canonical prefixes or synonyms in other records in the extended prefixuri_prefix_synonyms
- optional extra URI prefixes such as variants of Identifiers.org URLs, PURLs, etc. No URI prefix synyonms are allowed to be duplicates of either canonical or other URI prefix synonyms.
Extended prefix maps have the benefit over regular prefix maps in that they keep extra information. An extended prefix map can be readily collapsed into a normal prefix map by getting the
prefix
anduri_prefix
fields.
- as_inverted_dict()
Returns a mapping between canonical expansions and prefixes.
- Return type:
Mapping
[str
,str
]- Returns:
Mapping between namespaces and prefixes
- combine(context)
Merge a context into this one.
If there are conflicts, the current context takes precedence, and the merged expansions are marked as non-canonical
- Parameters:
context (
Context
) –- Returns:
-
comments:
List
[str
] = None Optional comments on the context.
-
description:
Optional
[str
] = None A human readable concise description of the context.
- filter(prefix=None, namespace=None)
Returns namespaces matching query.
- Parameters:
prefix (
Optional
[str
]) –namespace (
Optional
[str
]) –
- Returns:
-
format:
Optional
[str
] = None
-
location:
Optional
[str
] = None
-
lower:
bool
= None
-
merged_from:
Optional
[List
[str
]] = None
-
name:
str
A unique stable handle for the context.
- namespaces(lower=False, force=True, as_list=True)
All unique namespaces in all prefix expansions
- Parameters:
lower – if True, the namespace is normalized to lowercase.
force (
bool
) – if True, recompute. if False, return cachedas_list (
bool
) – if True (default), return as a list. Otherwise a set
- Return type:
Union
[List
[str
],Set
[str
]]- Returns:
-
prefix_expansions:
List
[PrefixExpansion
] All prefix expansions within that context. Corresponds to http://www.w3.org/ns/shacl#prefixes
- prefixes(lower=False, force=True, as_list=True)
All unique prefixes in all prefix expansions.
- Parameters:
lower – if True, the prefix is normalized to lowercase.
force (
bool
) – if True, recompute. if False, return cachedas_list (
bool
) – if True (default), return as a list. Otherwise a set
- Return type:
Union
[List
[str
],Set
[str
]]- Returns:
-
upper:
bool
= None
- validate(canonical_only=True)
Validates each prefix expansion in the context.
- Parameters:
canonical_only –
- Return type:
List
[str
]- Returns:
- class prefixmaps.datamodel.context.PrefixExpansion(context, prefix, namespace, status, expansion_source=None)
Bases:
object
An individual mapping between a prefix and a namespace.
A PrefixExpansion corresponds to a SHACL PrefixDeclaration (https://www.w3.org/TR/shacl/#dfn-prefix-declarations)
- canonical()
True if this is the canonical mapping in both directions.
Note that canonicality is always relative to a context:
(“GEO”, “http://purl.obolibrary.org/obo/geo/”) is canonical in the OBO Foundry context
- Return type:
bool
- Returns:
True if the status is canonical
-
context:
str
Each PrefixExpansion is grouped into a context.
-
expansion_source:
Optional
[str
] = None Indicates the source of the prefix expansion.
-
namespace:
str
Corresponds to http://www.w3.org/ns/shacl#namespace
-
prefix:
str
Corresponds to http://www.w3.org/ns/shacl#prefix
-
status:
StatusType
Indicates whether the expansion is canonical, a prefix alias, a namespace alias, or both.
- validate()
Validate the prefix expansion.
Ensures that prefixes conform to W3C CURIE syntax
Ensures that namespaces conform to a restricted subset of W3C URI syntax
Note that we use a highly restricted syntax in order to filter out pseudo-semantic URIs. These include URLs for websites intended for humans that have http parameters with `?`s, `=`s, etc.
These URLs are almost NEVER intended to be used as semantic URIs, i.e as subjects of RDF triples. It is almost always bad practice to use them as such.
In future, if we discover exceptions to this rule, we will add them here.
- Return type:
List
[str
]- Returns:
list of validation errors
- class prefixmaps.datamodel.context.StatusType(value)
Bases:
Enum
Classification of prefix expansions.
Note that only canonical mappings are exposed to the users of the library. However, it can be useful for prefixmap ETL pipelines to include non-canonical mappings for purposes of debugging.
- canonical = 'canonical'
The canonical prefix expansion for a prefix. The set of all canonical mappings must be bijective.
- multi_alias = 'multi_alias'
Both the prefix and the namespace are aliases for existing canonical namespaces.
- namespace_alias = 'namespace_alias'
The prefix is an alias for an existing canonical namespace.
- prefix_alias = 'prefix_alias'
The prefix is an alias for an existing canonical prefix.