#!Query 는 InterpreterSchema 로 적어 둔 속성으로 페이지를 골라 표나 목록으로 보여 줍니다. 노션의 데이터베이스 뷰, 옵시디언의 Bases 와 같은 쓰임인데, 따로 입력할 것이 없습니다 — 위키가 이미 쌓아 둔 #!Schema 값을 읽을 뿐입니다.
인자는 schema.org class 이름이고(공백으로 여러 개), 본문은 탭으로 구분한 줄입니다. 빈 줄과 # 로 시작하는 줄은 무시합니다. #!Schema 와 같은 모양입니다.
| Raw | Preview |
|---|---|
[[[#!Query Person where birthDate has show birthDate birthPlace sort birthDate ]]] |
No pages match. |
줄 | 뜻 |
|---|---|
| 조건. 여러 줄이면 모두 만족해야 합니다 |
| 이름 칸 뒤에 보일 속성들. 여러 줄이면 이어 붙입니다 |
| 정렬. 기본은 이름순 |
| 그 속성의 값별로 묶어 보입니다. 없는 페이지는 맨 뒤 |
| 최대 N 쪽(기본 100, 상한 500) |
| 표(기본) 또는 목록 |
where)속성은 값을 여럿 가질 수 있으므로(sameAs 처럼), 조건은 값들의 집합에 대해 묻습니다. = 는 어느 한 값이라도 같으면, != 는 어느 값도 같지 않으면 참입니다. 그래야 값이 하나 더 생겼다고 답이 바뀌지 않습니다.
연산 | 뜻 |
|---|---|
| 같다 / 다르다. 대소문자를 가리지 않습니다 |
| 포함한다 / 포함하지 않는다. 대소문자를 가리지 않습니다 |
| 크기 비교. 둘 다 숫자면 숫자로, 아니면 글자로 비교합니다(ISO 날짜 |
| 속성이 있다 / 없다. 값이 필요 없습니다 |
| 같은 월·일. |
값 자리에 today 를 쓰면 오늘 날짜입니다. md 와 쓰면 오늘의 월·일(--MM-DD)이 됩니다 — 오늘 생일인 사람은 이렇게 구합니다.
| Raw | Preview |
|---|---|
[[[#!Query Person where birthDate md today show birthDate ]]] |
No pages match. |
shwo 로 잘못 적은 줄이 조용히 무시되면, 아무것도 안 보이는 것이 «조건에 맞는 페이지가 없다» 와 구별되지 않습니다. 오류 상자가 어느 줄이 문제인지 말합니다.where 도 없는 질의는 거부합니다. 위키의 모든 페이지가 되기 때문입니다.#!Schema 를 저장하는 즉시 이 목록에 나타납니다. 이 인터프리터가 따로 저장하는 것은 없습니다.#!Schema 는 날짜를 그 자체(1972-10-17)와 연월(1972-10)로 함께 저장하므로(월로 찾으려는 것), 그대로 보이면 생일이 둘인 것처럼 읽힙니다. 같은 속성에 그 연월로 시작하는 더 긴 값이 있으면 짧은 쪽을 보이지 않게 합니다 — 데이터에서는 지우지 않으니 where 는 둘 다 봅니다.#!Schema 가 아니라 본문에서 읽기.QueryEngine — 순수 함수: 줄을 읽고(parse), 조건을 평가하고, 정렬·묶기·자르기를 합니다. 데이터베이스도 HTML 도 모릅니다. QueryEngineSpec 이 확인합니다.InterpreterQuery — CalculatedSchemaOrg 에서 필요한 속성만(selectFacts) 읽어 엔진에 주고 그립니다. 한 번에 읽는 행은 2만으로 막아 두었습니다 — 거의 모든 페이지가 가진 속성으로 물으면 «앞의 행들» 로 줄어들 뿐 테이블을 통째로 읽지는 않습니다.Similar pages by cosine similarity. Words after page name are term frequency.