You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Semantic Wiki实现企业计算机组件管理的方法及显示问题咨询

企业计算机组件(HDD)Semantic Wiki管理方案指南

嘿,作为折腾过Semantic Wiki做企业资产管理的老玩家,我来帮你一步步理清怎么实现这个需求~

一、先搞定存储室的层级结构

存储室的层级很好解决,用语义属性+递归查询就能实现:

  1. 先创建一个语义属性 Has parent storage room,属性类型设为「页面」(关联其他存储室页面)。
  2. 比如创建顶层页面「总部存储区」,然后创建「一楼存储室A」页面,在页面里添加:
    [[Has parent storage room::总部存储区]]
    
    要是还有下级,比如「一楼存储室A-1隔间」,就加[[Has parent storage room::一楼存储室A]]。
  3. 要展示层级结构,用#ask查询生成树形视图:
    {{#ask: [[Has parent storage room::+]]
    | ?Has parent storage room
    | format=tree
    | mainlabel=存储室名称
    }}
    
    这样就能自动渲染出存储室的层级关系了。

二、HDD的记录方案:单独页面 vs Subobject

1. 是否需要每个HDD单独页面?

看你的需求:

  • 如果每个HDD需要单独的详情页(比如要加维修记录、备注、历史变更日志),单独页面更合适,后续扩展更灵活。
  • 如果只是纯粹的结构化数据管理,不需要额外内容,Subobject是更轻量化的选择,不用创建大量独立页面。

2. Subobject的内容显示问题(除了Ask查询)

你说Subobject不能直接显示?其实可以用#show函数+自定义模板来直接渲染Subobject内容,步骤如下:

第一步:定义语义属性

先把需要的属性创建好:

  • Has status:枚举类型,选项设为「在用/闲置」
  • Belongs to computer:页面类型,关联计算机页面
  • Located in storage room:页面类型,关联存储室页面
  • Serial number:字符串类型
  • Specifications:文本类型

第二步:在汇总页面添加Subobject

比如创建「企业HDD资产汇总」页面,添加Subobject:

{{#subobject: HDD-SN123456
| Has status = 在用
| Belongs to computer = 研发部-计算机001
| Serial number = SN123456
| Specifications = 1TB SATA 3.0 7200转
}}

{{#subobject: HDD-SN789012
| Has status = 闲置
| Located in storage room = 一楼存储室A
| Serial number = SN789012
| Specifications = 2TB NVMe PCIe 4.0
}}

第三步:创建显示模板

创建Template:HDD Subobject Card,内容如下:

<div style="border:1px solid #eee; padding:10px; margin:10px 0; border-radius:4px;">
  <h4>HDD 序列号:{{{Serial number}}}</h4>
  <ul>
    <li>状态:{{{Has status}}}</li>
    {{#if: {{{Belongs to computer|}}}
      | <li>所属计算机:[[{{{Belongs to computer}}}]]</li>
      | <li>所在存储室:[[{{{Located in storage room}}}]]</li>
    }}
    <li>规格:{{{Specifications}}}</li>
  </ul>
</div>

第四步:在汇总页面渲染Subobject

回到「企业HDD资产汇总」页面,添加这段代码:

{{#show: {{FULLPAGENAME}}
| ?Has subobject
| format=template
| template=HDD Subobject Card
}}

这样就能直接在页面上把所有Subobject的内容以卡片形式展示出来,不用只依赖Ask查询啦。

3. Subobject的替代方案

如果不想用Subobject,还有两个常用方案:

方案一:数据表单(Data Forms)

适合给非技术用户用,步骤:

  1. 创建一个Form:HDD表单,把所有需要的字段(状态、所属计算机等)对应到之前的语义属性。
  2. 用户可以通过「添加数据」功能,选择这个表单填写信息,系统会自动生成结构化的页面内容(或者在汇总页面批量添加条目),同时语义属性会被自动标记,方便后续查询。

方案二:模板+内联属性

创建一个Template:HDD Entry模板,内容如下:

[[Has status::{{{status|}}}]]
[[Belongs to computer::{{{computer|}}}]]
[[Located in storage room::{{{storeroom|}}}]]
[[Serial number::{{{serial|}}}]]
[[Specifications::{{{specs|}}}]]

### HDD {{{serial}}}
- 状态:{{{status}}}
{{#if: {{{computer|}}} | - 所属计算机:[[{{{computer}}}]] | - 所在存储室:[[{{{storeroom}}}]] }}
- 规格:{{{specs}}}

然后在汇总页面直接调用模板添加HDD条目:

{{HDD Entry
| status = 在用
| computer = 研发部-计算机002
| serial = SN345678
| specs = 512GB SSD SATA 3.0
}}

这种方式的好处是,页面内容既直观可读,又能被Semantic Wiki索引到所有属性,查询起来和Subobject一样方便。

三、额外的查询与概览页面实现

最后,你可以创建一个「HDD资产概览」页面,用#ask查询做各种汇总:

  • 所有在用HDD:
    {{#ask: [[Has status::在用]]
    | ?Serial number
    | ?Belongs to computer
    | ?Specifications
    | format=table
    | headers=none
    }}
    
  • 某存储室的闲置HDD:
    {{#ask: [[Has status::闲置]] [[Located in storage room::一楼存储室A]]
    | ?Serial number
    | ?Specifications
    | format=list
    }}
    

这样一套下来,就能满足你搭建类数据库系统+概览页面的需求啦~

内容的提问来源于stack exchange,提问作者Black S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:14:34