Help:哈希格式

From semantic-mediawiki.org
Jump to: navigation, search
哈希格式
逗号分隔型列表,且带有括在英文圆括号当中的额外输出以及额外的格式编排选项
进一步的信息
提供方: Semantic Result Formats(语义结果格式)
最低版本: 1.6.1
最高版本: 依然支持
要求:
格式名称: hash
作者: Daniel Werner
类别: misc
目录

哈希格式hash, 作为Semantic Result Formats(语义结果格式)扩展的组成部分, 用于采取更适合于MediaWiki模板或解析器函数进一步处理的方式,对查询结果加以格式编排。

它与列表格式相当类似,但却提供有更多的自定义选项。 它既可以采用各种分隔符来分隔不同的取值而将结果输出为字符串,亦可将结果直接存储到哈希表(hash)(HashTables)当中。

参数

针对与哈希表扩展HashTable或者其他的输出处理方式配合使用,而不是针对Semantic MediaWiki专有列表格式list之类非机器友好型的花瓶(养眼之物),对默认参数进行了优化。这就意味着,默认情况下禁用了所有种类的链接以及产生不必要的信息,尽管可以予以启用。

参数 参数中文名称 描述 允许取值 默认值
pagetitle 页面标题 究竟是将页面标题显示为结果条目,还是将其从结果当中略去 show(显示), hide(隐藏) show(显示)
headers 标头 属性输出之前对属性名称的显示方式。取值为'show'(显示)时将它们显示为链接,而取值为'plain'(普通)时不显示链接。可采用标头分隔符参数headersep来定义属性名称(标头)与某个页面的实际属性取值之间的分隔符。 show(显示), plain(普通), hide(隐藏) hide(隐藏)
hidegaps 隐藏空白 究竟是打印输出所请求但又不可用的,采用分隔符分隔的属性和记录取值,还是将其略去。例如,如果请求的是属性NameAgeValue,假设某个页面上又尚未提供AgeValue的话,当hidegaps无效时,就会返回'..., Max<PROP><PROP>, ...'之类的结果,而当hidegaps有效时,就会返回'..., Max, ...'之类的结果。 none(无), property(属性), recordy(记录), all(全部) none(无)
link 链接 允许在可能的情况下将取值输出为链接。如果该参数被设置为subject(主题)(仅仅适用于数组Array),那么,只会将页面标题作为链接包含进来。 all(全部), subject(主题), none(无) none(无)
limit 限值 所要返回结果的最大数量【等于信息显示时所依据页面的最大数量以及相应数组或哈希表(如果创建了的话)的长度】 任意数值 最大值 *
结果分隔符(Result Separators)
注意: 另请参阅利用LocalSettings.php来为结果分隔符设置默认取值的可能性
sep 分隔符 每个页面的结果之间的分隔符 任意字符串 ', '(逗号)
propsep 属性分隔符 每个页面所请求属性之间的分隔符 任意字符串 <PROP>
manysep 多值型属性取值分隔符 多值型属性取值之间的分隔符 任意字符串 <MANY>(多值型)
recordsep 记录型属性取值分隔符 记录型属性成员取值之间的分隔符 任意字符串 <RCRD>(记录型)
headersep 标头分隔符 当没有将标头参数headers设置为'hide'(隐藏)的时候,属性名称与某个所请求页面属性的实际属性取值之间的分隔符。默认为一个空格' '。将此参数设置为更为独特的某种取值,且哈希表扩展HashTables可用的话,则可轻松地允许创建某种二维数组/哈希或者哈希/哈希结构。 任意字符串 ' '(空格)
特殊功能
name 名称 如果提供此参数,且存在可用的哈希表扩展HashTables,则会创建一个采用指定名称的哈希表(无可见输出) 任意字符串 未设定

* array(数组)和hash(哈希)查询结果的数量限值被设置为默认情况下Semantic MediaWiki的配置变量$smwgQMaxInlineLimit之中所设定的最大值。

配置

有5个配置变量可用来配置默认分隔符。如果需要的话,可利用LocalSettings.php来加以调整。尽管在这些参数的名称当中并没有hash字样,但它们仍适用于哈希格式。

$srfgArraySep
参数sep的默认值。 默认值: ', '
$srfgArrayPropSep
参数propsep的默认值。 默认值: '<PROP>'
$srfgArrayManySep
参数manysep的默认值。 默认值: '<MANY>'
$srfgArrayRecordSep
参数recordsep的默认值。 默认值: '<RCRD>'
$srfgArrayHeaderSep
参数headersep的默认值。 默认值: ' '

示例

可将这些变量设定成一个正常的字符串取值,或者其中包含一个数组('title', (int)namespace, (array)parameters),从而定义维基站点当中的一个页面。 如果选择后一种情况,所解析的该网站的内容将作为默认值。 生成每个页面时仅对该取值解析一次,而且页面当中不应当含有任何动态性很强的内容, 尽管定义继而可在那些进一步处理查询结果的模板当中使用的模板,是一种有用的做法。 如下为定义示例:

# 数组分隔符参数'arraysep'的默认取值字符串'<,,,>'
$srfgArraySep = '<,,,>';
 
# 作为属性分隔符参数'propsep'默认值的'Template:SepP'的内容:
$srfgArrayPropSep  = array( 'SepP', NS_TEMPLATE );
 
# 参数为1='abc'和val='def'的'Template:SepH'的内容:
$srfgArrayHeaderSep array( 'SepH', NS_TEMPLATE, array( 1 => 'abc', 'val' => 'def' );

Special:Ask有关的事项

一旦对任何配置变量加以设置,使其把某一维基页面的内容作为取值加以获取, 这就不会像对Special:Ask所期望的那样发挥作用。 这是因为解析器在需要这种取值的时候并未在全面运行。 在这种情况下,如果并非在嵌入型模式运行查询,就会从另一个配置变量$srfgArraySepTextualFallbacks那里加载一个后备分隔符(fallback separator)。这是一个具有键值seppropsepmanyseprecordsepheadersep的数组,其中含有来自这些键值的等价默认值(当然并不是LocalSettings.php当中所设定的那一个)。 尽管亦可在LocalSettings.php当中对此变量加以修改,但这么做并没有任何的实际好处,因为这些取值总之仅仅准备在语义搜索特殊页面上使用。 我们只是应当清楚这一点,以免混淆。

示例

现在,让我们定义一个名称为hashName的哈希表,同时将页面名称(Pagenames)作为关联键(associative keys),并将每个结果页面Name属性的取值作为取值:

{{#ask: [[Name::+]]
| ?Name
| format = hash
| name = hashName
}}

实际示例

有待添加



本文档页面适用于SMW从1.6.1版到最新版本的所有版本。
      其他语言: en

Help:Hash format zh-hans 1.6.1