@BOK MaterialX
数据注释
Dataview首先是一个数据索引,因此它支持将元数据添加到您的知识库中的相对丰富的方式。Dataview 跟踪_降价页面_和_降价任务_级别的信息,其中每个页面/任务可以具有与其关联的任意数量的复杂(数字、对象、列表)字段。每个_字段_都是具有特定类型的命名值(如“数字”或“文本”)。
页面
您可以通过三种不同的方式将字段添加到降价页面:
-
Frontmatter:Frontmatter 是一个常见的 Markdown 扩展,它允许将 YAML 元数据添加到页面顶部。所有 YAML 字段都将作为 Dataview 字段提供:
--- alias: "document" last-reviewed: 2021-08-17 thoughts: rating: 8 reviewable: false ---
-
内联字段:对于那些想要更自然的注释的人,Dataview 支持“内联”字段,它提供了一种简单的
Key:: Value
语法,您可以直接将其嵌入到文件中:# Markdown Page Basic Field:: Value **Bold Field**:: Nice!
如果你想在句子中嵌入元数据,或者在同一行中嵌入多个字段,你可以使用括号语法:
I would rate this a [rating:: 9]! It was [mood:: acceptable].
还有另一种括号语法,它在功能上类似于括号,但在阅读器模式下呈现时隐藏了键:
This will not show the (very long key:: key).
-
隐式:Dataview 自动使用大量元数据注释页面,例如文件创建
file.cday
日期 ( )、任何关联日期 (file.day
)、文件中的链接 (file.outlinks
)、标签 (file.tags
) 等。
一个简单的 Markdown 页面,其中包含两种用户定义的添加元数据的方式:
---
duration: 4 hours
reviewed: false
---
# Movie X
**Thoughts**:: It was decent.
**Rating**:: 6
[mood:: okay] | [length:: 2 hours]
隐式字段
Dataview 会自动为每个页面添加大量元数据:
file.name
:文件标题(字符串)。file.folder
:该文件所属文件夹的路径。file.path
:完整的文件路径(字符串)。file.ext
: 文件类型的扩展名;通常是“.md”(一个字符串)。file.link
:文件的链接(链接)。file.size
:文件的大小(以字节为单位)(一个数字)。file.ctime
:文件的创建日期(日期+时间)。file.cday
:文件的创建日期(只是一个日期)。file.mtime
:文件最后修改的日期(日期+时间)。file.mday
:文件最后修改的日期(只是一个日期)。file.tags
:笔记中所有唯一标签的数组。子标签按每个级别细分,因此#Tag/1/A
将存储在数组中[#Tag, #Tag/1, #Tag/1/A]
。file.etags
:注释中所有显式标签的数组;不像file.tags
, 不包括子标签。file.inlinks
:指向此文件的所有传入链接的数组。file.outlinks
:此文件中所有传出链接的数组。file.aliases
:笔记的所有别名的数组。file.tasks``- [ ] blah blah blah
:此文件中所有任务(即,)的数组。file.lists
:文件中所有列表元素的数组(包括任务);这些元素是有效的任务,可以在任务视图中呈现。file.frontmatter
:包含所有frontmatter的原始值;主要用于检查原始 frontmatter 值或动态列出 frontmatter 键。
如果文件在其标题(表单yyyy-mm-dd
或yyyymmdd
)中有日期,或者有一个Date
字段/内联字段,它还具有以下属性:
file.day
:与文件关联的明确日期。
如果您使用 Obsidian 默认的“加星标文件”插件,还可以使用以下元数据:
file.starred
:如果此文件已被“星星”黑曜石插件加注星标。
任务
您还可以使用内联字段语法使用元数据注释您的_任务_(即表单的行):- [ ] blah blah blah
- [ ] Hello, this is some [metadata:: value]!
- [X] I finished this on [completion::2021-08-15].
字段速记
为了支持“常见用例”,Dataview 了解一些常见数据的简写,您可能希望使用以下命令注释任务:
句法
- 截止日期:
🗓️YYYY-MM-DD
- 完成日期:
✅YYYY-MM-DD
- 创建日期:
➕YYYY-MM-DD
例子
- 星期六做这个🗓️2021-08-29。
- 上周六完成✅2021-08-22。
- 我在 ➕1990-06-14 上做的。
请注意,如果您不喜欢表情符号,您仍然可以对这些字段进行文本注释([due:: ]
、[created:: ]
、 [completion:: ]
)。
隐式字段
与页面一样,Dataview 为每个任务添加了许多隐式字段:
- 任务从其父页面继承_所有字段_
rating
- 因此,如果您的页面中有一个字段,您也可以在您的任务中访问它。 status
:此任务的完成状态,由[ ]
括号内的字符确定。通常一个用于未完成任务的空间" "
和一个用于完成任务的 X"X"
,但允许支持替代任务状态的插件。checked
: 是否以任何方式检查了此任务(即,它的状态不是不完整/为空)。completed
:这个_具体的_任务是否已经完成;这不考虑任何子任务的完成/未完成。如果任务已被标记为“X”,则该任务被明确视为“已完成”。fullyCompleted
:此任务及其所有子任务是否已完成。text
: 这个任务的文本。line
:此任务显示的行。lineCount
:此任务占用的 Markdown 行数。path
: The full path of the file this task is in.section
: A link to the section this task is contained in.tags
: Any tags inside of the text task.outlinks
: Any links defined in this task.link
: A link to the closest linkable block near this task; useful for making links which go to the task.children
: Any subtasks or sublists of this task.task
: If true, this is a task; otherwise, it is a regular list element.completion
: The date a task was completed; set by[completion:: ...]
or shorthand syntax.due
: The date a task is due, if it has one. Set by[due:: ...]
or shorthand syntax.created
: The date a task was created; set by[created:: ...]
or shorthand syntax.annotated
: True if the task has any custom annotations, and false otherwise.parent
: The line number of the task above this task, if present; will be null if this is a root-level task.blockId
: The block ID of this task / list element, if one has been defined with the^blockId
syntax; otherwise null.
Field Types
All fields in dataview have a type, which determines how dataview will render, sort, and operate on that field. Dataview understands several distinct field types to cover common use cases:
-
Text: The default catch-all. If a field doesn't match a more specific type, it is just plain text.
Example:: This is some normal text.
-
Number: Numbers like '6' and '3.6'.
Example:: 6 Example:: 2.4 Example:: -80
-
Boolean: true/false, as the programming concept.
Example:: true Example:: false
-
Date: ISO8601 dates of the general form
YYYY-MM[-DDTHH:mm:ss.nnn+ZZ]
. Everything after the month is optional.Example:: 2021-04-18 Example:: 2021-04-18T04:19:35.000 Example:: 2021-04-18T04:19:35.000+06:30
-
Duration: Durations of the form
<time> <unit>
, like6 hours
or4 minutes
. Common english abbreviations like6hrs
or2m
are accepted. You can specify multiple units using an optional comma separator:6 hours, 4 minutes
or6hr4min
.Example:: 7 hours Example:: 4min Example:: 16 days Example:: 9 years, 8 months, 4 days, 16 hours, 2 minutes Example:: 9 yrs 8 min
-
Link: Plain Obsidian links like
[[Page]]
or[[Page|Page Display]]
.-
If you reference a link in frontmatter, you need to quote it, as so:
key: "[[Link]]"
. This is default Obsidian-supported behavior.Example:: [[A Page]] Example:: [[Some Other Page|Render Text]]
-
-
List: Lists of other dataview fields. In YAML, these are defined as normal YAML lists; for inline fields, they are just comma-separated lists.
Example:: 1, 2, 3 Example:: "yes", "or", "no"
-
Object: A map of name to dataview field. These can only be defined in YAML frontmatter, using the normal YAML object syntax:
field: value1: 1 value2: 2 ...