跳轉到

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_timeprov:wasGeneratedAtTime 掛 PromptInstance / ResponseSnapshot artifact
  • Activity-level: TurnRun activity 時間由 artifact 衍生不重複掛 prov:startedAtTime / prov:endedAtTime(避免 W3C PROV-O 語意衝突)
  • Turn header 凍結為 RDF parser contract:
## TurnN (@<iso> | id=<msg_id_short> | model=<slug> | reasoning=<sec>s)

assistant-onlymsg.id 取 UUID 前 8 字節短截。任何 RDF 轉換 parser MUST 遵守此格式。

Agent URI 規約

provai:agent-{provider}-{model_slug}        # LLM agent(扁平 slug)
provai:agent-{human_slug}                   # human agent

範例:

  • 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:Artifact
ex:artifactType=ContextPack
per-turn 輸入脈絡集合(CQ4 差異比對) turn 級
CaseCorpus ex:Artifact + ex:artifactType=CaseCorpus
prov: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 推理仍可運作。

接下來