UpdateSkillPipeline
What it is
- A pipeline that updates RDF triples for an existing Skill individual in an ontology.
- It conditionally inserts:
ABI.hasDescription (if a new description is provided and not already present)
ABI.isSkillOf (if a person URI is provided and not already present)
- Uses a configured triple store service to fetch existing triples and insert new ones.
Public API
Classes
-
UpdateSkillPipelineConfiguration(PipelineConfiguration)
- Holds dependencies for the pipeline.
- Fields:
triple_store: ITripleStoreService — triple store service used to read/insert graphs.
-
UpdateSkillPipelineParameters(PipelineParameters)
- Input schema for
run.
- Fields:
individual_uri: str — URI of the skill (must match URI_REGEX).
description: Optional[str] = None — description text to add (if not already present).
person_uri: Optional[str] = None — person URI to link via ABI.isSkillOf (must match URI_REGEX).
-
UpdateSkillPipeline(Pipeline)
- Main pipeline implementation.
Methods
-
UpdateSkillPipeline.run(parameters: PipelineParameters) -> rdflib.Graph
- Validates
parameters is UpdateSkillPipelineParameters.
- Loads the current subject graph for
individual_uri.
- Builds an insert graph with only missing triples.
- Inserts the new triples into the triple store.
- Returns the merged graph (
existing + inserted).
-
UpdateSkillPipeline.as_tools() -> list[langchain_core.tools.BaseTool]
- Exposes a single LangChain
StructuredTool:
- Name:
update_skill
- Args schema:
UpdateSkillPipelineParameters
- Calls
run(...) internally.
-
UpdateSkillPipeline.as_api(...) -> None
- Currently a no-op (returns
None and does not register routes).
Configuration/Dependencies
- Requires an
ITripleStoreService implementation providing at least:
get_subject_graph(subject: rdflib.term.URIRef) -> rdflib.Graph
insert(graph: rdflib.Graph) -> None
- Uses RDF predicates from
naas_abi_core.utils.Graph.ABI:
ABI.hasDescription
ABI.isSkillOf
- Input URI validation uses
URI_REGEX.
Usage
from naas_abi.pipelines.UpdateSkillPipeline import (
UpdateSkillPipeline,
UpdateSkillPipelineConfiguration,
UpdateSkillPipelineParameters,
)
# triple_store must implement ITripleStoreService
config = UpdateSkillPipelineConfiguration(triple_store=triple_store)
pipeline = UpdateSkillPipeline(config)
params = UpdateSkillPipelineParameters(
individual_uri="https://example.org/skill/123",
description="Can write technical documentation",
person_uri="https://example.org/person/456",
)
result_graph = pipeline.run(params)
print(len(result_graph))
Caveats
- Only inserts triples when the exact triple is not already present in the subject graph.
as_api(...) does not expose any HTTP endpoints (it does nothing).
run(...) raises ValueError if called with a parameters object that is not UpdateSkillPipelineParameters.