词表 czns

这是 命名空间里那些自定义类与属性的机读定义:四个类、七个属性,用 Turtle 与 JSON-LD 各写一份。有了它,czns:IntangibleHeritage 不再只是一个指向页面锚点的名字,而是一个有定义、有取值范围的术语。

一、这份词表包含什么

四个类:IntangibleHeritage(非遗项目)、Guide(行程编排)、FoodItem(饮食品类)、Fact(事实条目)。七个属性:pageType、subjectType、cluster、charCount、hasSourceSection、claim、verifiedOn。每个都给 rdfs:label、rdfs:comment 与 rdfs:range;类给 rdfs:subClassOf。

为什么要写 rdfs:comment 而不是只列名字:因为几个术语的边界正是被误用过的地方。比如 FoodItem 的注释里明写「不使用 schema:FoodEstablishment——那指餐厅、饮食店等经营场所」;verifiedOn 的注释里明写「与 schema:dateModified 不是一回事,不合并」。这些说明写在词表里,比写在一篇文章里更难被绕过。

二、Turtle

@prefix czns:   <https://chaoshanwiki.cn/ns/#> .
@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:    <http://www.w3.org/2002/07/owl#> .
@prefix xsd:    <http://www.w3.org/2001/XMLSchema#> .
@prefix schema: <https://schema.org/> .

<https://chaoshanwiki.cn/ns/#> a owl:Ontology ;
    rdfs:label "潮俗网词表 czns"@zh ;
    rdfs:comment "定义本站自有的类与属性。前缀 czns: 展开为 https://chaoshanwiki.cn/ns/# 。"@zh ;
    owl:versionInfo "2026-10-19" .

czns:IntangibleHeritage a owl:Class ;
    rdfs:label "非遗项目"@zh ;
    rdfs:comment "对应国家级非物质文化遗产代表性项目名录中的项目或子项。页内须标编号、序号、批次与申报地区;项目名用名录原名,不做简写。"@zh ;
    rdfs:subClassOf schema:Thing .

czns:Guide a owl:Class ;
    rdfs:label "行程编排"@zh ;
    rdfs:comment "按城市与天数编排的路线页。区别于 schema:TouristTrip——后者的行程项是结构化的 itinerary,本类不承诺该结构。"@zh ;
    rdfs:subClassOf schema:Thing .

czns:FoodItem a owl:Class ;
    rdfs:label "饮食品类"@zh ;
    rdfs:comment "菜、粿、茶这一类文化品类。不使用 schema:FoodEstablishment——那指餐厅、饮食店等经营场所。"@zh ;
    rdfs:subClassOf schema:Thing .

czns:Fact a owl:Class ;
    rdfs:label "事实条目"@zh ;
    rdfs:comment "单一可核查主张的记录。一条只表达一件事;复合说法须拆分。"@zh ;
    rdfs:subClassOf schema:Thing .

czns:pageType a owl:DatatypeProperty ;
    rdfs:label "页面类型"@zh ;
    rdfs:comment "页面本身是什么。取值:Article、CollectionPage、WebPage、Dataset、FAQPage、DefinedTermSet。"@zh ;
    rdfs:range xsd:string .

czns:subjectType a owl:DatatypeProperty ;
    rdfs:label "主体类型"@zh ;
    rdfs:comment "页面主要描述的对象是什么。取值:Person、Place、TouristAttraction、Event、czns:IntangibleHeritage、czns:Guide、czns:FoodItem、DefinedTermSet、Thing。"@zh ;
    rdfs:range xsd:string .

czns:cluster a owl:DatatypeProperty ;
    rdfs:label "跨语言簇"@zh ;
    rdfs:comment "同一内容各语言版本共用的值,取母本 slug,用于把五种语言的分支认作同一对象。"@zh ;
    rdfs:range xsd:string .

czns:charCount a owl:DatatypeProperty ;
    rdfs:label "正文用字数"@zh ;
    rdfs:comment "去标签、去空白后的字符数,含标点与拉丁字符;不含 script、style 标签内的嵌入数据(如事实清单的 JSON)。"@zh ;
    rdfs:range xsd:integer .

czns:hasSourceSection a owl:DatatypeProperty ;
    rdfs:label "设有来源节"@zh ;
    rdfs:comment "该页是否设「来源」一节。"@zh ;
    rdfs:range xsd:boolean .

czns:claim a owl:DatatypeProperty ;
    rdfs:label "事实断言"@zh ;
    rdfs:comment "一条可独立核查的陈述。不使用 schema:text——那表示某作品的正文。"@zh ;
    rdfs:range xsd:string .

czns:verifiedOn a owl:DatatypeProperty ;
    rdfs:label "核查日期"@zh ;
    rdfs:comment "该条事实最后核对通过的日期。与 schema:dateModified(页面修改日期)不是一回事,不合并。"@zh ;
    rdfs:range xsd:date .

三、JSON-LD

同一份内容,换成 JSON-LD。这个图另整段嵌在 script#cz-vocab-json 里,类型为 application/ld+json——不执行脚本也能取到,爬虫与解析器都能直接读。

{
 "@context": {
  "@vocab": "https://chaoshanwiki.cn/ns/#",
  "czns": "https://chaoshanwiki.cn/ns/#",
  "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
  "owl": "http://www.w3.org/2002/07/owl#",
  "xsd": "http://www.w3.org/2001/XMLSchema#",
  "schema": "https://schema.org/",
  "@language": "zh",
  "label": {
   "@id": "rdfs:label"
  },
  "comment": {
   "@id": "rdfs:comment"
  },
  "subClassOf": {
   "@id": "rdfs:subClassOf",
   "@type": "@id"
  },
  "range": {
   "@id": "rdfs:range",
   "@type": "@id"
  }
 },
 "@graph": [
  {
   "@id": "https://chaoshanwiki.cn/ns/#",
   "@type": "owl:Ontology",
   "label": "潮俗网词表 czns",
   "comment": "定义本站自有的类与属性。前缀 czns: 展开为 https://chaoshanwiki.cn/ns/# 。",
   "owl:versionInfo": {
    "@value": "2026-10-19",
    "@language": null
   }
  },
  {
   "@id": "czns:IntangibleHeritage",
   "@type": "owl:Class",
   "label": "非遗项目",
   "comment": "对应国家级非物质文化遗产代表性项目名录中的项目或子项。页内须标编号、序号、批次与申报地区;项目名用名录原名,不做简写。",
   "subClassOf": "schema:Thing"
  },
  {
   "@id": "czns:Guide",
   "@type": "owl:Class",
   "label": "行程编排",
   "comment": "按城市与天数编排的路线页。区别于 schema:TouristTrip——后者的行程项是结构化的 itinerary,本类不承诺该结构。",
   "subClassOf": "schema:Thing"
  },
  {
   "@id": "czns:FoodItem",
   "@type": "owl:Class",
   "label": "饮食品类",
   "comment": "菜、粿、茶这一类文化品类。不使用 schema:FoodEstablishment——那指餐厅、饮食店等经营场所。",
   "subClassOf": "schema:Thing"
  },
  {
   "@id": "czns:Fact",
   "@type": "owl:Class",
   "label": "事实条目",
   "comment": "单一可核查主张的记录。一条只表达一件事;复合说法须拆分。",
   "subClassOf": "schema:Thing"
  },
  {
   "@id": "czns:pageType",
   "@type": "owl:DatatypeProperty",
   "label": "页面类型",
   "comment": "页面本身是什么。取值:Article、CollectionPage、WebPage、Dataset、FAQPage、DefinedTermSet。",
   "range": "xsd:string"
  },
  {
   "@id": "czns:subjectType",
   "@type": "owl:DatatypeProperty",
   "label": "主体类型",
   "comment": "页面主要描述的对象是什么。取值:Person、Place、TouristAttraction、Event、czns:IntangibleHeritage、czns:Guide、czns:FoodItem、DefinedTermSet、Thing。",
   "range": "xsd:string"
  },
  {
   "@id": "czns:cluster",
   "@type": "owl:DatatypeProperty",
   "label": "跨语言簇",
   "comment": "同一内容各语言版本共用的值,取母本 slug,用于把五种语言的分支认作同一对象。",
   "range": "xsd:string"
  },
  {
   "@id": "czns:charCount",
   "@type": "owl:DatatypeProperty",
   "label": "正文用字数",
   "comment": "去标签、去空白后的字符数,含标点与拉丁字符;不含 script、style 标签内的嵌入数据(如事实清单的 JSON)。",
   "range": "xsd:integer"
  },
  {
   "@id": "czns:hasSourceSection",
   "@type": "owl:DatatypeProperty",
   "label": "设有来源节",
   "comment": "该页是否设「来源」一节。",
   "range": "xsd:boolean"
  },
  {
   "@id": "czns:claim",
   "@type": "owl:DatatypeProperty",
   "label": "事实断言",
   "comment": "一条可独立核查的陈述。不使用 schema:text——那表示某作品的正文。",
   "range": "xsd:string"
  },
  {
   "@id": "czns:verifiedOn",
   "@type": "owl:DatatypeProperty",
   "label": "核查日期",
   "comment": "该条事实最后核对通过的日期。与 schema:dateModified(页面修改日期)不是一回事,不合并。",
   "range": "xsd:date"
  }
 ]
}

四、这份词表不做什么

三条,先讲清楚,免得当它比实际更强。一是没有推理承诺:subClassOf 写的是 schema:Thing,属声明性质,本站不提供 reasoner,也不保证任何机器推理结论。二是没有独立文件端点:平台不收 .ttl 与 .json,所以不存在 czns.ttl 这样的地址;能取的是页面本身,以及页内的 script。三是没有全量覆盖:词表只管本站自定义的部分,其余一律复用 schema.org,不另造同义词。

四是没有取值校验:pageType、subjectType 的允许值写在 rdfs:comment 里,rdfs:range 只声明为 xsd:string。也就是说,词表说明了允许值,不等于机器会拦住别的值。要强制约束,得另加 SHACL 一类的东西,本站没有做。

还有一处限制写在明处:czns: 下的术语 URI 是 /ns/# 加锚点,属哈希命名空间——一个 HTML 页面就能承载全部术语,不需要为每个术语开一个地址。这与「不能做内容协商」是同一处短板的两面,如实记在这里。

那么现在到底靠什么把关?两条,2026 年 10 月 24 日又重跑过:一是全站 272 页内嵌的 JSON-LD 逐页 JSON.parse,结果全部可解析;二是把这 272 页的 pageType、subjectType 取值,与上面两个允许值清单逐一比对,没有越界值。除这两条之外没有自动闸门,词条内容与事实条目靠人工复核。

五、怎么用

数据里写 "subjectType": "czns:IntangibleHeritage",同时在 @context 里声明 "czns": {"@id": "https://chaoshanwiki.cn/ns/#", "@prefix": true},展开即得术语 URI。完整的内嵌上下文对象见命名空间第六节,可直接复制。

一处要注意:subjectType 的值写的是紧凑 IRI(如 czns:IntangibleHeritage),但它的 range 是 xsd:string,所以 JSON-LD 处理器不会把它展开成术语 URI,取出来仍是原样的字符串。按同一张前缀表做一次字符串替换,即得 https://chaoshanwiki.cn/ns/#IntangibleHeritage。之所以不声明为 @type: @id,是因为取值里还有 Person、Place、Thing 这类 schema.org 的裸类名——一旦按 @id 处理,它们会被 @vocab 拼成 ns/#Person 这种并不存在的术语。

类与属性的人读定义、取值说明与两层类型的划分,都在命名空间;实际用到这些字段的数据在数据集与事实清单。

首页 › 机器可读 › 词表

最后修订时间:2026年10月26日