Model¶
Prov-AI AP 的核心領域模型基於 W3C PROV-O,輔以 SKOS 概念治理與 DCMI metadata terms。本節描述 L1 Core 的 class 結構與主要 triple paths。
設計四原則¶
所有 SKOS Concept 在新增前必須過一輪以下 vocabulary 並標註 skos:closeMatch / skos:exactMatch;如全無對應,用 skos:editorialNote 標明「專案自定」+ 最接近的 loose match。
| Vocabulary | URL pattern |
|---|---|
| DataCite Metadata Schema 4.5+ contributorType | https://schema.datacite.org/ |
| MARC relator codes | http://id.loc.gov/vocabulary/relators/<3-letter> |
| CRediT Contributor Roles | https://credit.niso.org/contributor-roles/<role>/ |
| schema.org | https://schema.org/<role> |
| FOAF | http://xmlns.com/foaf/0.1/ |
L1 Core 結構樹¶
[skos:Concept](KOS 概念;僅引用 / 定錨)
└─ ex:WorkItem (prov:Entity) — CQ1–CQ3
├─ dcterms:identifier
├─ dcterms:subject → skos:Concept
├─ dcterms:language
└─ ex:taskType → skos:Concept (TaskTypeScheme — L1 必用)
ex:TaskRun (prov:Activity) — CQ2, CQ9
├─ dcterms:identifier
├─ prov:atLocation (chat_url / share_url / api_log_url) # 多值;share / API 共用
├─ prov:startedAtTime / prov:endedAtTime # share path: derived;API path: independent event time
├─ ex:activityType → skos:Concept (ActivityTypeScheme:TaskRunType — L1 必用)
├─ dcterms:hasPart → ex:TurnRun (1..n)
└─ prov:qualifiedAssociation → prov:Association # case-level;human_agent_id → Editor role
├─ prov:agent → prov:Agent (IRI 規約)
└─ prov:hadRole → skos:Concept (RoleScheme:Editor)
ex:TurnRun (prov:Activity) — CQ4–CQ8
├─ dcterms:identifier
├─ ex:turnIndex
├─ prov:atLocation (turn anchor / request_log_url)
├─ ex:activityType → skos:Concept (ActivityTypeScheme:TurnRunType: InitialPrompting / Probing / Revising)
├─ prov:used → ex:Artifact (PromptInstance + ModelConfig per-turn + 可選 ContextPack)
├─ prov:generated → ex:Artifact (ResponseSnapshot + 可選 ResultSnapshot / DecisionNote)
└─ prov:qualifiedAssociation → prov:Association # turn-level;assistant-only model → ModelRunner role
├─ prov:agent → prov:Agent (provai:agent-{provider}-{slug})
└─ prov:hadRole → skos:Concept (RoleScheme:ModelRunner)
prov:Collection (ContextPack) — CQ4
├─ ex:artifactType → ArtifactTypeScheme:ContextPack
├─ dcterms:identifier
└─ prov:hadMember → ex:Artifact (0..n)
ex:Artifact (prov:Entity)
├─ ex:artifactType → skos:Concept (ArtifactTypeScheme L1×9)
├─ prov:atLocation (封存位置)
├─ prov:wasGeneratedAtTime (PromptInstance / ResponseSnapshot)
├─ ex:contentHash (完整性校驗;可選)
├─ ex:metaJSON (API / 工具鏈中繼 + ModelConfig optional metadata;JSON 序列字串)
└─ ex:decisionOutcome (DecisionNote 限定;MUST conditional) + ex:rationaleText
ex:Artifact (artifactType=CaseCorpus)
├─ dcterms:identifier
├─ rdfs:label
└─ prov:hadMember → ex:Artifact (cases)
主要 Triple Paths¶
任務定錨¶
ex:workitem/W001 a ex:WorkItem ;
dcterms:identifier "W001" ;
dcterms:subject [
a skos:Concept ;
dcterms:identifier "300010098" ;
skos:prefLabel "motifs"@en
] ;
dcterms:language "zh-TW" ;
ex:taskType <provai:scheme/TaskTypeScheme/TermTranslation> .
任務與回合串接¶
ex:taskrun/T001 a ex:TaskRun ;
dcterms:identifier "T001" ;
prov:atLocation <https://chatgpt.com/share/...> ;
ex:activityType <provai:scheme/ActivityTypeScheme/TermTranslation> ;
dcterms:hasPart ex:turnrun/T001-1 , ex:turnrun/T001-2 , ex:turnrun/T001-3 ;
prov:qualifiedAssociation [
a prov:Association ;
prov:agent <provai:agent-jason> ;
prov:hadRole <provai:scheme/RoleScheme/Editor>
] .
Turn-level model association(assistant-only)¶
ex:turnrun/T001-2 a ex:TurnRun ;
ex:turnIndex 2 ;
ex:activityType <provai:scheme/ActivityTypeScheme/Probing> ;
prov:used ex:artifact/promptInstance/T001-2 ,
ex:artifact/modelConfig/T001-2 ;
prov:generated ex:artifact/responseSnapshot/T001-2 ;
prov:qualifiedAssociation [
a prov:Association ;
prov:agent <provai:agent-openai-gpt-5-thinking> ;
prov:hadRole <provai:scheme/RoleScheme/ModelRunner>
] .
ex:artifact/modelConfig/T001-2 a ex:Artifact ;
ex:artifactType <provai:scheme/ArtifactTypeScheme/ModelConfig> ;
dcterms:hasVersion "gpt-5-thinking" ;
ex:metaJSON "{\"reasoningDurationSec\":12.4,\"reasoningEffort\":\"high\"}" .
來源與決策¶
ex:result/R001-final a ex:Result ;
ex:activityType <provai:scheme/ActivityTypeScheme/TermTranslation> ;
dcterms:source ex:artifact/sourceEvidence/aat-300010098 ;
prov:wasDerivedFrom ex:artifact/responseSnapshot/T001-3 .
ex:artifact/decisionNote/T001-final a ex:Artifact ;
ex:artifactType <provai:scheme/ArtifactTypeScheme/DecisionNote> ;
ex:decisionOutcome <provai:scheme/DecisionOutcomeScheme/Adopted> ;
ex:rationaleText "在 turn 3 確認 '紋飾' 為最貼近 AAT 300010098 的中文對應..." .
Time / Agent / Role 三段式¶
對齊 W3C PROV-O 規範的學術級嚴謹度:
Time(凍結為 RDF parser contract)¶
- Entity-level:
msg.create_time→prov:wasGeneratedAtTime掛 PromptInstance / ResponseSnapshot artifact - Activity-level: TurnRun activity 時間由 artifact 衍生,不重複掛
prov:startedAtTime/prov:endedAtTime(避免 W3C PROV-O 語意衝突) - Turn header 凍結為 RDF parser contract:
assistant-only;msg.id 取 UUID 前 8 字節短截。任何 RDF 轉換 parser MUST 遵守此格式。
Agent URI 規約¶
範例:
provai:agent-openai-gpt-5-thinking(LLM)provai:agent-jason(C 系列 human_agent_id)provai:agent-yin-rong(L 系列 human_agent_id)
規約:re.sub(r'[^a-z0-9]+','-', slug.lower()).strip('-');reasoning depth 不入 Agent URI、留為 ModelConfig description 內可選 implementation metadata。
兩端覆蓋原則¶
case-level qualifiedAssociation
└─ human_agent_id (jason / yin-rong)
→ prov:agent
→ prov:hadRole = RoleScheme:Editor
turn-level qualifiedAssociation (assistant-only)
└─ model_slug (provai:agent-{provider}-{model_slug})
→ prov:agent
→ prov:hadRole = RoleScheme:ModelRunner
msg.author.role走 quality flag,不對應 RoleScheme(四層分離原則)。
Source-Location-Selector 三分工¶
prov:atLocation → 位置(chat_url / share_url / api_log_url / blob URI)
dcterms:source → 來源依據(resource-oriented;指向 ex:Artifact)
oa:hasSelector (L2) → 片段定位(TextQuote / TextPosition / Fragment)
ex:sourceLocator → deprecated(v0.1.1 起;v1.0 移除 alias)
ex:contentHash → 完整性校驗(可選;建議搭配 prov:atLocation)
Legacy 欄位遷移規則¶
| 舊欄位 | 舊用法 | 新處理 | 政策 |
|---|---|---|---|
ex:contentRef |
指向檔案 / prompt / response / 封存位置 | 改用 prov:atLocation |
deprecated;v1.0 移除 |
dcterms:references(位置) |
URL / file / log location | 改用 prov:atLocation |
deprecated |
dcterms:references(來源) |
此成果依據哪個來源 | 改用 dcterms:source 指向 SourceEvidence |
deprecated |
dcterms:source(字串型) |
URL / 字串 | 改為 resource-oriented,指向 ex:Artifact (ArtifactType=SourceEvidence 或 CaseCorpus) |
— |
ex:sourceLocator |
來源中片段定位 | 改用 OA selector | deprecated |
ContextPack vs CaseCorpus¶
兩者都是「集合」,但層級不同:
| 概念 | RDF 落點 | 用途 | 粒度 |
|---|---|---|---|
ContextPack |
prov:Collection + prov:hadMember → ex:Artifactex:artifactType=ContextPack |
per-turn 輸入脈絡集合(CQ4 差異比對) | turn 級 |
CaseCorpus |
ex:Artifact + ex:artifactType=CaseCorpusprov:hadMember → ex:Artifact (case) |
研究級案例蒐藏(cross-case / cross-TaskRun grouping) | corpus 級 |
實例:
provai:corpus-2025-aat-zh-localization(C 系列 30 件)provai:corpus-2025-aat-localization-confucius-instruments(L 系列 21 案 × 4 prompt 變體 = 84 件)
PROV-DM 相容性¶
| Prov-AI 概念 | PROV-DM | PROV-O |
|---|---|---|
ex:WorkItem |
Entity(任務定義) | prov:Entity 子類 |
ex:TaskRun |
Activity(任務執行) | prov:Activity 子類 |
ex:TurnRun |
Activity(任務內回合) | prov:Activity 子類 |
ex:Artifact |
Entity(任何資訊實體) | prov:Entity 子類 |
ex:Result |
Entity(最終成果) | prov:Entity 子類 |
prov:Agent |
Agent | prov:Agent 直接使用 |
prov:Association |
qualified association | prov:Association 直接使用 |
prov:Collection |
Collection(ContextPack) | prov:Collection 直接使用 |
Prov-AI 自定義屬性都標 rdfs:subPropertyOf 對應的 PROV-O 屬性,確保 PROV-DM 推理仍可運作。
接下來¶
- 看全部 54 元素規格表:Profile
- 看怎麼把實際對話對應到 RDF:Usage Guidelines
- 看完整 worked example:Examples → C02 Motifs