RDF 1.2 TriG

RDF 데이터셋 언어

W3C 작업 초안

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2026/WD-rdf12-trig-20260612/
최신 게시 버전:
https://www.w3.org/TR/rdf12-trig/
최신 편집자 초안:
https://w3c.github.io/rdf-trig/spec/
이력:
https://www.w3.org/standards/history/rdf12-trig/
커밋 이력
테스트 스위트:
https://w3c.github.io/rdf-tests/rdf/rdf12/rdf-trig/
최신 권고안:
https://www.w3.org/TR/trig
편집자:
Gregg Kellogg (2025-09-06까지), 추모
Dominik Tomaszuk
이전 편집자:
Gavin Carothers (RDF 1.1)
Andy Seaborne (RDF 1.1)
저자:
Chris Bizer (Freie Universität Berlin)
Richard Cyganiak (Freie Universität Berlin)
피드백:
GitHub w3c/rdf-trig (풀 리퀘스트, 새 이슈, 열린 이슈)
public-rdf-star-wg@w3.org 제목 줄에 [rdf12-trig] … 메시지 주제 … 포함 (보관함)

초록

이 문서는 TriG라고 하는 RDF용 텍스트 구문을 정의하며, 이를 통해 RDF 데이터셋을 일반적인 사용 패턴과 데이터타입에 대한 축약형을 사용하여 간결하고 자연스러운 텍스트 형식으로 완전히 작성할 수 있습니다. TriG는 Turtle [RDF12-TURTLE] 형식의 확장입니다.

RDF 1.2 TriG는 다른 트리플객체로 사용할 수 있는 네 번째 종류의 RDF 용어로서 [RDF12-TURTLE]와 트리플 용어를 공유하며, 이를 통해 다른 진술에 대한 진술을 만들 수 있습니다. RDF 1.2 TriG는 또한 [RDF12-TURTLE]와 방향성 언어 태그 문자열을 공유합니다.

또한 RDF 1.2 TriG는 [RDF12-TURTLE]와 트리플 구체화주석 구문 확장을 공유하며, 이를 통해 트리플 용어단언될 수 있습니다.

이 문서의 상태

이 섹션은 이 문서가 게시된 시점의 상태를 설명합니다. 현재 W3C 출판물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 확인할 수 있습니다.

이 문서는 RDF 1.2 문서 모음의 일부입니다. TriG는 여러 그래프를 위한 RDF 구문을 정의하라는 RDF & SPARQL Working Group의 헌장 요구사항을 충족하기 위한 것입니다. TriG는 RDF용 Turtle 구문 [RDF12-TURTLE]의 확장입니다. 현재 문서는 Chris Bizer와 Richard Cyganiak의 원래 제안을 기반으로 합니다.

이 문서는 RDF & SPARQL Working Group권고안 트랙을 사용하여 작업 초안으로 게시했습니다.

작업 초안으로 게시되었다는 것이 W3C와 그 회원들의 승인을 의미하지는 않습니다.

이 문서는 초안 문서이며 언제든지 다른 문서로 업데이트, 대체 또는 폐기될 수 있습니다. 진행 중인 작업이 아닌 다른 것으로 이 문서를 인용하는 것은 부적절합니다. 향후 이 예정된 권고안의 업데이트에는 새 기능이 포함될 수 있습니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹이 작성했습니다. W3C는 해당 그룹의 산출물과 관련하여 이루어진 특허 공개의 공개 목록을 유지합니다. 해당 페이지에는 특허 공개 방법에 대한 지침도 포함되어 있습니다. 자신이 알고 있는 특허가 필수 청구항을 포함한다고 믿는 실제 지식을 가진 개인은 W3C 특허 정책 제6절에 따라 해당 정보를 공개해야 합니다.

이 문서는 2025년 8월 18일 W3C 프로세스 문서의 적용을 받습니다.

1. 소개

이 섹션은 비규범적입니다.

이 문서는 RDF Concepts and Abstract Syntax 문서 [RDF12-CONCEPTS]에서 정의된 RDF를 위한 구체 구문인 TriG를 정의합니다. TriG는 Turtle [RDF12-TURTLE]의 확장이며, 완전한 RDF 데이터셋 표현을 지원하도록 확장되었습니다.

이 명세는 RDF 1.1 TriG [TRIG]에서 정의된 원래 TriG 구문을 확장하여, RDF 1.2 Concepts and Abstract Data Model [RDF12-CONCEPTS]에서 도입된 새 기능을 지원합니다. 이 확장은 완전한 하위 호환성을 가집니다.

2. TriG 언어

이 섹션은 비규범적입니다.

TriG 문서RDF 데이터셋을 간결한 텍스트 형식으로 작성할 수 있게 합니다. 이는 지시문, 트리플 진술, 트리플 생성 진술을 포함하는 그래프 진술, 그리고 선택적인 빈 줄의 시퀀스로 구성됩니다. 주석은 다른 어휘 토큰의 일부가 아닌 # 뒤에 주어질 수 있으며, 줄 끝까지 이어집니다.

그래프 진술은 IRI 또는 빈 노드와 중괄호({})로 둘러싸인 트리플 진술 그룹의 쌍입니다. 그래프 진술의 IRI 또는 빈 노드는 다른 그래프 진술에서 사용될 수 있으며, 이는 각 그래프 진술에서 생성된 트리플들의 합집합을 취한다는 것을 의미합니다. 그래프 레이블로 사용된 IRI 또는 빈 노드는 어떤 트리플 진술의 일부로도 다시 나타날 수 있습니다. 선택적으로 그래프 진술은 IRI로 레이블이 지정되지 않을 수도 있습니다. 이러한 그래프 진술은 기본 그래프에 해당하며, 이는 RDF 데이터셋의 기본 그래프입니다.

RDF 데이터셋TriG 문서로부터 구성하는 방법은 4. TriG 문법5. 구문 분석에서 정의됩니다.

2.1 버전 선언

TriG는 Turtle [RDF12-TURTLE]과 동일한 버전 선언 메커니즘을 사용합니다.

2.2 트리플 진술

TriG는 Turtle 언어의 확장이므로 Turtle 언어의 모든 구문을 허용합니다. 단순 트리플, 술어 목록, 그리고 객체 목록은 모두 그래프 진술 내부에서 사용하거나, TriG 문서에서처럼 독립적으로 사용할 수 있습니다. 그래프 진술 밖에 있는 경우, 트리플은 기본 그래프의 일부로 간주되며, 이는 RDF 데이터셋의 기본 그래프입니다.

2.3 그래프 진술

그래프 진술은 IRI 또는 빈 노드RDF 그래프와 쌍으로 만듭니다. 그래프를 구성하는 트리플 진술은 {} 안에 둘러싸입니다.

TriG 문서에서 그래프 IRI 또는 빈 노드는 둘 이상의 그래프 진술에 대한 레이블로 사용될 수 있습니다. 그래프 진술의 그래프 레이블은 생략될 수 있습니다. 이 경우 그 그래프는 기본 그래프로 간주되며, 이는 RDF 데이터셋의 기본 그래프입니다.

RDF 데이터셋은 단일 그래프만 포함할 수도 있습니다.

예제 1: 단일 그래프가 있는 데이터셋

# This document encodes one graph.
PREFIX ex: <http://www.example.org/vocabulary#>
PREFIX : <http://www.example.org/exampleDocument#>

:G1 { :Monica a ex:Person ;
    ex:name "Monica Murphy" ;
    ex:homepage <http://www.monicamurphy.org> ;
    ex:email <mailto:monica@monicamurphy.org> ;
    ex:hasSkill ex:Management ,
                ex:Programming .
}

RDF 데이터셋기본 그래프 및/또는 0개 이상의 명명된 그래프를 포함할 수 있습니다.

예제 2: 기본 그래프와 명명된 그래프가 있는 데이터셋

# This document contains a default graph and two named graphs.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dc: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

# default graph
{
  <http://example.org/bob> dc:publisher "Bob" .
  <http://example.org/alice> dc:publisher "Alice" .
}

<http://example.org/bob> {
   _:a foaf:name "Bob" .
   _:a foaf:mbox <mailto:bob@oldcorp.example.org> .
   _:a foaf:knows _:b .
}

<http://example.org/alice> {
   _:b foaf:name "Alice" .
   _:b foaf:mbox <mailto:alice@work.example.org> .
}

TriG는 명료성을 위해 데이터 작성자가 선택할 수 있도록 그래프와 트리플을 작성하는 다양한 대체 방식을 제공합니다.

예제 3: 명명된 그래프를 작성하는 대체 방식

# This document contains a same data as the previous example.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dc: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

# default graph - no {} used.
<http://example.org/bob> dc:publisher "Bob" .
<http://example.org/alice> dc:publisher "Alice" .

# GRAPH keyword to highlight a named graph
# Abbreviation of triples using ;
GRAPH <http://example.org/bob>
{
   [] foaf:name "Bob" ;
      foaf:mbox <mailto:bob@oldcorp.example.org> ;
      foaf:knows _:b .
}

GRAPH <http://example.org/alice>
{
    _:b foaf:name "Alice" ;
        foaf:mbox <mailto:alice@work.example.org>
}

2.4 기타 용어

그 밖의 모든 용어, 구문 형식, 지시문은 RDF Turtle에서 가져옵니다.

2.4.1 빈 노드에 대한 특별 고려사항

서로 다르게 레이블이 지정된 그래프 진술에서 동일한 식별자를 공유하는 빈 노드는 같은 빈 노드로 간주됩니다.

3. 적합성

비규범적으로 표시된 섹션뿐 아니라, 이 명세의 모든 작성 지침, 다이어그램, 예제 및 참고 사항은 비규범적입니다. 이 명세의 그 밖의 모든 내용은 규범적입니다.

이 문서에서 핵심 단어 MUST, MUST NOT, 그리고 SHOULD는 여기에 표시된 것처럼 모두 대문자로 나타나는 경우에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 합니다.

이 명세는 다음에 대한 적합성 기준을 정의합니다.

적합한 TriG 문서4. TriG 문법에서 정의된 문법 및 추가 제약을 준수하는 Unicode 문자열이며, trigDoc 생성식으로 시작합니다. TriG 문서는 RDF 데이터셋을 직렬화합니다.

적합한 TriG 파서는 애플리케이션을 대신하여 TriG 문서를 읽을 수 있는 시스템입니다. 이는 RDF 데이터셋을 직렬화된 형태에서, 5. 구문 분석에서 정의된 대로 일반적으로 어떤 형태의 API를 통해 애플리케이션에 사용할 수 있게 합니다.

TriG 언어를 식별하는 IRI는 다음과 같습니다. http://www.w3.org/ns/formats/TriG

참고

이 명세는 TriG 파서가 적합하지 않은 입력 문서를 처리하는 방법을 정의하지 않습니다.

3.1 미디어 타입 및 콘텐츠 인코딩

TriG의 미디어 타입은 application/trig입니다. TriG 콘텐츠의 콘텐츠 인코딩은 항상 UTF-8입니다.

4. TriG 문법

TriG 문서는 UTF-8 [RFC3629]로 인코딩된 RDF 문자열입니다. U+0000부터 U+D7FF까지, 그리고 U+E000부터 U+10FFFF까지의 범위에 있는 Unicode 스칼라 값만 허용됩니다. 이는 U+D800부터 U+DFFF까지의 범위인 서러게이트 코드 포인트를 제외합니다.

4.1 공백

공백(생성식 WS)은 그렇지 않으면 하나의 터미널로 잘못 인식될 수 있는 두 터미널을 구분하는 데 사용됩니다. 아래에서 대문자로 된 규칙 이름은 공백이 의미 있는 위치를 나타냅니다. 이들은 TriG 파서를 구성하기 위한 가능한 터미널 선택지를 형성합니다.

공백은 생성식 String에서 의미가 있습니다.

4.2 주석

TriG의 주석은 IRIREF, STRING_LITERAL_SINGLE_QUOTE, STRING_LITERAL_QUOTE, STRING_LITERAL_LONG_SINGLE_QUOTE, 또는 STRING_LITERAL_LONG_QUOTE 밖에 있는 #로 시작하며, 줄 끝( LFs 또는 CRs로 표시됨)까지 계속되거나, 주석 표시자 뒤에 줄 끝이 없으면 파일 끝까지 계속됩니다. 주석은 공백으로 처리됩니다.

4.3 IRI 참조

상대 IRI 참조Uniform Resource Identifier (URI): Generic Syntax [RFC3986]에 따라 섹션 5.2의 기본 알고리즘만 사용하여 기준 IRI로 해석됩니다. 구문 기반 정규화나 스킴 기반 정규화 (RFC3986의 섹션 6.2.2 및 6.2.3에 설명됨)는 수행되지 않습니다. IRI 참조에서 추가로 허용되는 문자는 Internationalized Resource Identifiers (IRIs) [RFC3987]의 섹션 6.5에 따라 URI 참조의 비예약 문자와 동일한 방식으로 처리됩니다.

@base 또는 BASE 지시문은 [RFC3986] 섹션 5.1.1, "콘텐츠에 포함된 기준 URI"에 따라 상대 IRI 참조를 해석하는 데 사용되는 기준 IRI를 정의합니다. 섹션 5.1.2, "캡슐화 엔터티에서 온 기준 URI"는 SOAP 봉투의 xml:base 지시문이나 Content-Location 헤더가 있는 MIME multipart 문서와 같은 캡슐화 문서에서 범위 내 기준 IRI가 어떻게 올 수 있는지를 정의합니다. 5.1.3, "검색 URI에서 온 기준 URI"에서 식별되는 "검색 URI"는 특정 TriG 문서가 검색된 URL입니다. 위 항목 중 어느 것도 기준 URI를 지정하지 않으면 기본 기준 URI(섹션 5.1.4, "기본 기준 URI")가 사용됩니다. 각 @base 또는 BASE 지시문은 이전 기준 URI에 상대적인 새로운 범위 내 기준 URI를 설정합니다.

4.4 이스케이프 시퀀스

TriG 문서에는 세 가지 형태의 이스케이프가 사용됩니다.

각 종류의 이스케이프 시퀀스를 사용할 수 있는 컨텍스트
숫자
이스케이프
문자열
이스케이프
예약 문자
이스케이프
IRI들, RDF 용어로 사용되거나 PREFIX 또는 BASE 선언에서 사용됨 아니요 아니요
로컬 이름 아니요 아니요
문자열 아니요
참고

%-인코딩된 시퀀스는 IRI의 문자 범위 안에 있으며, 로컬 이름에서 명시적으로 허용됩니다. 이들은 '%' 뒤에 두 개의 16진수 문자가 오는 형태로 나타나며, 동일한 세 문자 시퀀스를 나타냅니다. 이 시퀀스들은 처리 중에 디코딩되지 않습니다. TriG에서 <http://a.example/%66oo-bar>로 작성된 용어는 IRI http://a.example/%66oo-bar를 가리키며, IRI http://a.example/foo-bar를 가리키지 않습니다. 접두사 PREFIX ex: <http://a.example/>가 있는 ex:%66oo-bar로 작성된 용어도 IRI http://a.example/%66oo-bar를 가리킵니다.

4.5 문법

여기서 사용된 EBNF는 XML 1.0 [EBNF-NOTATION]에서 정의됩니다.

참고:

  1. 빈 노드 식별자TriG 문서 전체에서 동일한 빈 노드를 나타냅니다.
  2. 작은따옴표 안의 키워드 ('@base', '@prefix', '@version', 'a', 'true', 및 'false')는 대소문자를 구분합니다. 큰따옴표 안의 키워드 ("BASE", "PREFIX"), 및 "VERSION")는 대소문자를 구분하지 않습니다.
  3. 이스케이프 시퀀스 UCHARECHAR는 대소문자를 구분합니다.
  4. 입력을 토큰화하고 문법 규칙을 선택할 때는 가장 긴 일치가 선택됩니다.
  5. 대문자 이름의 규칙을 터미널로 사용할 때 TriG 문법은 LL(1) 및 LALR(1)입니다.
  6. 문법의 진입점은 trigDoc입니다.
  7. 부호 있는 숫자에서는 부호와 숫자 사이에 공백이 허용되지 않습니다.
  8. 문자열 '@prefix', '@base', 및 '@version'는 LANG_DIR의 패턴과 일치하지만, prefix, base, 그리고 version 중 어느 것도 등록된 언어 하위태그는 아닙니다. 이 명세는 따옴표로 묶인 리터럴 뒤에 이 토큰들 중 하나가 오는 경우 (예: "A"@base) 그것이 Turtle 언어에 속하는지 여부를 정의하지 않습니다.
[1] trigDoc ::= (directive | block)*
[2] block ::= triplesOrGraph | wrappedGraph | triples2 | ("GRAPH" labelOrSubject wrappedGraph)
[3] triplesOrGraph ::= (labelOrSubject (wrappedGraph | (predicateObjectList '.'))) | (reifiedTriple predicateObjectList? '.')
[4] triples2 ::= (blankNodePropertyList predicateObjectList? '.') | (collection predicateObjectList '.')
[5] wrappedGraph ::= '{' triplesBlock? '}'
[6] triplesBlock ::= triples ('.' triplesBlock?)?
[7] labelOrSubject ::= iri | BlankNode
[8] directive ::= prefixID | base | version | sparqlPrefix | sparqlBase | sparqlVersion
[9] prefixID ::= '@prefix' PNAME_NS IRIREF '.'
[10] base ::= '@base' IRIREF '.'
[11] version ::= '@version' VersionSpecifier '.'
[12] sparqlPrefix ::= "PREFIX" PNAME_NS IRIREF
[13] sparqlBase ::= "BASE" IRIREF
[14] sparqlVersion ::= "VERSION" VersionSpecifier
[15] VersionSpecifier ::= STRING_LITERAL_QUOTE | STRING_LITERAL_SINGLE_QUOTE
[16] triples ::= (subject predicateObjectList) | (blankNodePropertyList predicateObjectList?) | (reifiedTriple predicateObjectList?)
[17] predicateObjectList ::= verb objectList (';' (verb objectList)?)*
[18] objectList ::= object annotation (',' object annotation)*
[19] verb ::= predicate | 'a'
[20] subject ::= iri | BlankNode | collection
[21] predicate ::= iri
[22] object ::= iri | BlankNode | collection | blankNodePropertyList | literal | tripleTerm | reifiedTriple
[23] literal ::= RDFLiteral | NumericLiteral | BooleanLiteral
[24] blankNodePropertyList ::= '[' predicateObjectList ']'
[25] collection ::= '(' object* ')'
[26] NumericLiteral ::= INTEGER | DECIMAL | DOUBLE
[27] RDFLiteral ::= String (LANG_DIR | ('^^' iri))?
[28] BooleanLiteral ::= 'true' | 'false'
[29] String ::= STRING_LITERAL_QUOTE | STRING_LITERAL_SINGLE_QUOTE | STRING_LITERAL_LONG_SINGLE_QUOTE | STRING_LITERAL_LONG_QUOTE
[30] iri ::= IRIREF | PrefixedName
[31] PrefixedName ::= PNAME_LN | PNAME_NS
[32] BlankNode ::= BLANK_NODE_LABEL | ANON
[33] reifier ::= '~' (iri | BlankNode)?
[34] reifiedTriple ::= '<<' rtSubject verb rtObject reifier? '>>'
[35] rtSubject ::= iri | BlankNode | reifiedTriple
[36] rtObject ::= iri | BlankNode | literal | tripleTerm | reifiedTriple
[37] tripleTerm ::= '<<(' ttSubject verb ttObject ')>>'
[38] ttSubject ::= iri | BlankNode
[39] ttObject ::= iri | BlankNode | literal | tripleTerm
[40] annotation ::= (reifier | annotationBlock)*
[41] annotationBlock ::= '{|' predicateObjectList '|}'

터미널용 생성식

[43] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'
/* #x00=NULL #x01-#x1F=control codes #x20=space */
[44] PNAME_NS ::= PN_PREFIX? ':'
[45] PNAME_LN ::= PNAME_NS PN_LOCAL
[46] BLANK_NODE_LABEL ::= '_:' (PN_CHARS_U | [0-9]) ((PN_CHARS | '.')* PN_CHARS)?
[47] LANG_DIR ::= '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)* ('--' [a-zA-Z]+)?
[48] INTEGER ::= [+-]? [0-9]+
[49] DECIMAL ::= [+-]? ([0-9]* '.' [0-9]+)
[50] DOUBLE ::= [+-]? (([0-9]+ '.' [0-9]* EXPONENT) | ('.' [0-9]+ EXPONENT) | ([0-9]+ EXPONENT))
[51] EXPONENT ::= [eE] [+-]? [0-9]+
[52] STRING_LITERAL_QUOTE ::= '"' ([^#x22#x5C#x0A#x0D] | ECHAR | UCHAR)* '"'
[53] STRING_LITERAL_SINGLE_QUOTE ::= "'" ([^#x27#x5C#x0A#x0D] | ECHAR | UCHAR)* "'"
[54] STRING_LITERAL_LONG_SINGLE_QUOTE ::= "'''" (("'" | "''")? ([^'\] | ECHAR | UCHAR))* "'''"
[55] STRING_LITERAL_LONG_QUOTE ::= '"""' (('"' | '""')? ([^"\] | ECHAR | UCHAR))* '"""'
[56] UCHAR ::= ('\u' HEX HEX HEX HEX) | ('\U' HEX HEX HEX HEX HEX HEX HEX HEX)
[57] ECHAR ::= '\' [tbnrf\"']
[58] WS ::= #x20 | #x09 | #x0D | #x0A
[59] ANON ::= '[' WS* ']'
[60] PN_CHARS_BASE ::= [A-Z]
| [a-z]
| [#xC0-#xD6]
| [#xD8-#xF6]
| [#xF8-#x02FF]
| [#x0370-#x037D]
| [#x037F-#x1FFF]
| [#x200C-#x200D]
| [#x2070-#x218F]
| [#x2C00-#x2FEF]
| [#x3001-#xD7FF]
| [#xF900-#xFDCF]
| [#xFDF0-#xFFFD]
| [#x00010000-#x000EFFFF]
[61] PN_CHARS_U ::= PN_CHARS_BASE | '_'
[62] PN_CHARS ::= PN_CHARS_U | '-' | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[63] PN_PREFIX ::= PN_CHARS_BASE ((PN_CHARS | '.')* PN_CHARS)?
[64] PN_LOCAL ::= (PN_CHARS_U | ':' | [0-9] | PLX) ((PN_CHARS | '.' | ':' | PLX)* (PN_CHARS | ':' | PLX))?
[65] PLX ::= PERCENT | PN_LOCAL_ESC
[66] PERCENT ::= '%' HEX HEX
[67] HEX ::= [0-9] | [A-F] | [a-f]
[68] PN_LOCAL_ESC ::= '\' ('_' | '~' | '.' | '-' | "!" | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%')

이 문법의 텍스트 버전은 여기에서 사용할 수 있습니다.

4.6 선택된 터미널 리터럴 문자열

이 문서는 일부 특정 터미널 리터럴 문자열 [EBNF-NOTATION]을 사용합니다. 이러한 터미널 리터럴 문자열에 사용된 Unicode 코드 포인트를 명확히 하기 위해, 다음 표는 이 문서 전반에서 사용되는 특정 문자와 시퀀스를 설명합니다.

코드 글리프 설명
U+000A LF 줄 바꿈
U+000D CR 캐리지 리턴
U+0022 " 따옴표
U+0023 # 번호 기호
U+0027 ' 아포스트로피
U+002D - 하이픈
U+003B : 콜론
U+0040 @ 앳 기호
U+005C \ 백슬래시
U+005F _ 밑줄
U+0061 a 라틴 소문자 E
U+007B { 왼쪽 중괄호
U+007D } 오른쪽 중괄호

다른 짧은 터미널 리터럴 문자열은 Unicode 문자의 특정 시퀀스로 구성됩니다.

space
U+0020
"""
각각 코드 포인트 U+0022를 갖는 세 개의 연결된 따옴표 문자
'''
각각 코드 포인트 U+0027를 갖는 세 개의 연결된 아포스트로피 문자
--
두 개의 연결된 - 문자

5. 구문 분석

RDF Concepts and Abstract Syntax [RDF12-CONCEPTS] 명세는 네 가지 유형의 RDF 용어를 정의합니다. IRI, 리터럴, 빈 노드, 그리고 트리플 용어입니다. 리터럴은 어휘 형식과 선택적인 언어 태그 [BCP47]— 초기 텍스트 방향을 포함할 수도 있음— 또는 선택적인 데이터타입 IRI로 구성됩니다. 추가 유형인 prefix는 구문 분석 중에 문자열 식별자를 네임스페이스 IRI에 매핑하는 데 사용됩니다. 이 섹션은 4.5 문법의 문법을 따르는 문자열을, 생성식 및 어휘 토큰과 일치하는 문자열을 RDF 용어 또는 그 구성요소(예: 언어 태그, 리터럴의 어휘 형식)에 매핑함으로써 트리플 집합으로 매핑합니다. 문법 생성식은 파서 상태를 변경하고 트리플을 내보냅니다.

5.1 파서 상태

TriG를 구문 분석하려면 열 개 항목의 상태가 필요합니다.

용어 생성자는 "records the curSubject and curPredicate."와 같은 표현을 사용하여 표시되는 이러한 값들의 스택을 만들 수 있습니다.

5.2 RDF 용어 생성자

이 표는 생성식과 어휘 토큰을 RDF 용어 또는 RDF 용어의 구성요소에 매핑하며, 이들은 5. 구문 분석에 나열되어 있습니다.

생성식 유형 절차
IRIREF IRI <> 사이의 문자를 가져오고, 숫자 이스케이프 시퀀스를 해제하여 IRI를 형성합니다. 상대 IRI 참조 해석은 섹션 6.3에 따라 수행됩니다. 결과 IRI는 일반 IRI 구문의 구문적 제한을 준수해야 MUST 하며, [RFC3986]의 섹션 3.3을 따르고 해당 IRI 스킴 명세가 부과하는 더 좁은 제한을 준수해야 SHOULD 합니다.
PNAME_NS prefix prefixID 또는 sparqlPrefix 생성식에서 사용될 때, prefix는 규칙의 첫 번째 인수와 일치하는, 잠재적으로 빈 RDF 문자열입니다. 그 문자열은 namespaces map의 키로 사용되며, 확장된 두 번째 인수는 향후 조회를 위해 그 키 아래에 저장됩니다.
IRI PrefixedName 생성식에서 사용될 때, iri는 규칙의 첫 번째 인수에 대응하는 namespaces map의 값입니다.
PNAME_LN IRI 잠재적으로 빈 prefix는 첫 번째 시퀀스인 PNAME_NS로 식별됩니다. namespaces map에는 대응하는 namespace가 있어야 MUST 합니다. IRI의 RDF 문자열은 두 번째 인수인 PN_LOCAL예약 문자를 이스케이프 해제하고, 이를 namespace에 연결하여 형성됩니다. 결과 IRI는 일반 IRI 구문의 구문적 제한을 준수해야 MUST 하며, 해당 IRI 스킴 명세가 부과하는 더 좁은 제한도 준수해야 SHOULD 합니다.
VersionSpecifier 리터럴 curVersion은 일치한 RDF 문자열 어휘 형식과 xsd:string 데이터타입을 사용하는 리터럴에서 가져옵니다.
STRING_LITERAL_SINGLE_QUOTE 어휘 형식 가장 바깥쪽 '들 사이의 문자를 가져오고, 숫자문자열 이스케이프 시퀀스를 해제하여 어휘 형식의 Unicode 문자열을 형성합니다.
STRING_LITERAL_QUOTE 어휘 형식 가장 바깥쪽 "들 사이의 문자를 가져오고, 숫자문자열 이스케이프 시퀀스를 해제하여 어휘 형식의 Unicode 문자열을 형성합니다.
STRING_LITERAL_LONG_SINGLE_QUOTE 어휘 형식 가장 바깥쪽 '''들 사이의 문자를 가져오고, 숫자문자열 이스케이프 시퀀스를 해제하여 어휘 형식의 Unicode 문자열을 형성합니다.
STRING_LITERAL_LONG_QUOTE. 어휘 형식 가장 바깥쪽 """들 사이의 문자를 가져오고, 숫자문자열 이스케이프 시퀀스를 해제하여 어휘 형식의 Unicode 문자열을 형성합니다.
LANG_DIR 언어 태그 @ 뒤의 문자가 언어 태그와, 일치한 문자에 --가 포함된 경우 선택적으로 초기 텍스트 방향을 형성합니다. 언어 태그는 [BCP47]의 섹션 2.2.9에 따라 올바른 형식이어야 MUST 합니다. 존재하는 경우 초기 텍스트 방향ltr 또는 rtl이어야 MUST 합니다.
RDFLiteral 리터럴 리터럴은 첫 번째 규칙 인수인 String의 어휘 형식을 갖습니다. '^^' iri 규칙이 일치하면 데이터타입 IRIiri에서 파생되며, 리터럴에는 언어 태그가 없습니다. LANG_DIR 규칙이 일치하면 언어 태그초기 텍스트 방향LANG_DIR에서 가져옵니다. 초기 텍스트 방향이 없으면 데이터타입은 rdf:langString입니다. 초기 텍스트 방향이 있으면 데이터타입은 rdf:dirLangString입니다. 어느 것도 일치하지 않으면 데이터타입은 xsd:string이고, 리터럴에는 언어 태그가 없습니다.
INTEGER 리터럴 리터럴은 입력 문자열의 어휘 형식과 xsd:integer 데이터타입을 갖습니다.
DECIMAL 리터럴 리터럴은 입력 문자열의 어휘 형식과 xsd:decimal 데이터타입을 갖습니다.
DOUBLE 리터럴 리터럴은 입력 문자열의 어휘 형식과 xsd:double 데이터타입을 갖습니다.
BooleanLiteral 리터럴 리터럴은 입력과 일치한 항목에 따라 true 또는 false의 어휘 형식과 xsd:boolean 데이터타입을 갖습니다.
BLANK_NODE_LABEL 빈 노드 두 번째 인수인 PN_LOCAL와 일치하는 문자열은 bnodeLabels의 키입니다. 맵에 대응하는 빈 노드가 없으면 하나가 할당됩니다.
ANON 빈 노드 빈 노드가 생성됩니다.
blankNodePropertyList 빈 노드 빈 노드가 생성됩니다. 다음 섹션의 blankNodePropertyList 규칙에 유의하십시오.
collection 빈 노드 비어 있지 않은 목록의 경우 빈 노드가 생성됩니다. 다음 섹션의 collection 규칙에 유의하십시오.
IRI 빈 목록의 경우 결과 IRI는 rdf:nil입니다. 다음 섹션의 collection 규칙에 유의하십시오.
reifier IRI | 빈 노드 curReifierterm에서 가져오며, 이는 일치한 iri 생성식 또는 BlankNode 생성식이 있는 경우 그 생성식에서 가져옵니다. 그러한 생성식이 일치하지 않으면 term은 새로운 RDF 빈 노드에서 가져옵니다.
tripleTerm 트리플 용어 트리플 용어ttSubject, predicate, 그리고 ttObject 생성식에서 구성된 용어들로 구성됩니다.
reifiedTriple IRI | 빈 노드 term은 일치한 reifier가 있으면 그곳에서 가져오고, 그렇지 않으면 새로운 RDF 빈 노드에서 가져옵니다.
annotationBlock IRI | 빈 노드 term은 이전에 일치한 reifier가 있으면 그곳에서 가져오고, 그렇지 않으면 새로운 RDF 빈 노드에서 가져옵니다.
참고

입력에서 오류를 감지하는 처리기는 입력에 설명된 것보다 더 적은 트리플을 포함하는 그래프 (전혀 트리플이 없는 경우 포함)를 결과로 만들 수 있으므로, 소비자는 출력 트리플을 사용할 때 신호된 오류 정보를 고려해야 합니다. 출력 트리플은 불완전할 수 있으며 잘못 타입 지정된 또는 잘못 형성된 용어를 포함할 수 있습니다.

5.3 RDF 트리플 구성

TriG 문서는 하나의 기본 그래프와 0개 이상의 명명된 그래프로 구성된 RDF 데이터셋을 정의합니다. 각 그래프는 RDF 트리플 집합으로 구성됩니다.

5.3.1 출력 그래프

상태 curGraph는 처음에는 설정되지 않습니다. 이는 구문 분석 중 생성된 트리플의 그래프 레이블을 기록합니다. 정의되지 않은 경우 기본 그래프가 사용됩니다.

규칙 labelOrSubjectcurGraphcurSubject를 모두 설정합니다 (이 중 하나만 사용됩니다).

다음 문법 생성식 절은 curGraph를 정의되지 않은 상태로 설정하여 기본 그래프를 나타냅니다.

  • block 규칙의 문법 생성식 절 wrappedGraph
  • triples2 규칙의 문법 생성식

문법 생성식 labelOrSubject predicateObjectList '.'predicateObjectList 생성식을 처리하기 전에 curGraph를 해제합니다. 이는 triplesOrGraph 규칙에서 이루어집니다.

5.3.2 트리플 출력

생성된 각 RDF 트리플은 curGraph에 추가되거나, 구문 분석 과정의 그 시점에 curGraph가 설정되어 있지 않으면 기본 그래프에 추가됩니다.

subject 생성식은 curSubject를 설정합니다. verb 생성식은 curPredicate를 설정합니다.

트리플은 구문 분석 과정의 다음 지점에서 생성되며, 생성된 각 RDF 트리플은 curGraph로 식별되는 그래프에 추가됩니다.

5.3.3 트리플 생성

문서의 각 object N은 RDF 트리플을 생성합니다: curSubject curPredicate N.

5.3.4 구체화자

reifier 생성식을 시작할 때, curReifierreifier 용어 생성자에서 가져옵니다. 그런 다음 RDF 트리플 curReifier rdf:reifies curTripleTerm을 산출합니다.

5.3.5 구체화된 트리플

reifiedTriple 생성식을 시작하면 curTripleTerm를 기록합니다. 새로운 tripleTerm 인스턴스 curTripleTermrtSubject, verb, 그리고 rtObject 생성식을 사용하여 생성됩니다. reifiedTriple 생성식을 마칠 때, curReifier가 설정되어 있지 않으면 새로운 RDF 빈 노드가 할당됩니다. 이어서 RDF 트리플 curReifier rdf:reifies curTripleTerm을 산출하고, 그다음 curTripleTerm의 기록된 값을 복원합니다. reifiedTriple과 일치하여 생성되는 노드는 curReifier입니다.

5.3.6 주석

annotation 생성식을 시작하면 curSubjectcurPredicate를 기록합니다. 새로운 tripleTerm 인스턴스 curTripleTermcurSubject curPredicate curObject를 사용하여 생성되고, curReifier의 값은 지워집니다. annotation 생성식을 마치면 curSubjectcurPredicate의 기록된 값을 복원합니다.

5.3.7 주석 블록

annotationBlock 생성식을 시작하면 curTripleTerm를 기록합니다. curReifier가 설정되어 있지 않으면, 새로운 RDF 빈 노드가 할당되고, 생성식은 RDF 트리플 curReifier rdf:reifies curTripleTerm을 산출합니다. curSubjectcurReifier에서 가져옵니다. annotationBlock 생성식을 마치면 curReifier의 값을 지우고 curTripleTerm를 복원합니다.

참고

curReifier가 이미 설정되어 있었다면, 구체화 트리플 curReifier rdf:reifies curTripleTerm5.3.4 구체화자에서 내보내졌습니다.

5.3.8 속성 목록

blankNodePropertyList 생성식을 시작하면 curSubjectcurPredicate를 기록하고, curSubject를 새로운 빈 노드 B로 설정합니다. blankNodePropertyList 생성식을 마치면 curSubjectcurPredicate를 복원합니다. blankNodePropertyList와 일치하여 생성되는 노드는 빈 노드 B입니다.

5.3.9 컬렉션

collection 생성식을 시작하면 curSubjectcurPredicate를 기록합니다. collection 생성식 안의 각 objectcurSubject가 새로운 빈 노드 B로 설정되고 curPredicaterdf:first로 설정됩니다. 첫 번째 이후의 각 객체 objectn는 트리플을 생성합니다:objectn-1 rdf:rest objectn . collection 생성식을 마치면 추가 트리플 curSubject rdf:rest rdf:nil .을 생성하고 curSubjectcurPredicate를 복원합니다. collection과 일치하여 생성되는 노드는 비어 있지 않은 목록의 경우 첫 번째 빈 노드 B이고, 빈 목록의 경우 rdf:nil입니다.

A. 개인정보 보호 고려사항

이 섹션은 비규범적입니다.

TriG 형식은 임의의 애플리케이션 데이터를 표현하는 데 사용되며, 여기에는 개인 식별 정보(PII)의 표현이나 민감한 것으로 간주될 수 있는 기타 정보가 포함될 수 있습니다. 이러한 정보를 게시하는 작성자는 그러한 정보를 게시할 필요와 사용을 신중하게 고려하고, 데이터가 소비되고 잠재적으로 공개될 것으로 예상되는 지역에 적용되는 규정(예: GDPR, CCPA, 기타)도 함께 고려해야 하며, 특히 데이터 접근에 승인 조치가 필요한지 여부를 고려해야 합니다.

B. 보안 고려사항

이 섹션은 비규범적입니다.

STRING_LITERAL_SINGLE_QUOTE, STRING_LITERAL_QUOTE, STRING_LITERAL_LONG_SINGLE_QUOTE, 그리고 STRING_LITERAL_LONG_QUOTE 생성식은 이스케이프되지 않은 제어 문자의 사용을 허용합니다. 이 명세가 이 콘텐츠를 최종 사용자에게 직접 노출하지는 않지만, 사용자 에이전트를 통해 표시될 수 있으며, 이러한 문자의 표시로 인해 표시된 텍스트가 난독화될 수 있습니다.

TriG는 범용 단언 언어입니다. 애플리케이션은 더 많은 단언을 추론하거나 IRI를 역참조하기 위해 주어진 데이터를 평가할 수 있으며, 해당 IRI의 스킴에 대한 보안 고려사항이 적용됩니다. 특히 HTTP IRI에 대해서는 [RFC3023] 섹션 10의 개인정보 보호 문제에 유의하십시오. 부정확하거나 악의적인 데이터 소스에서 얻은 데이터는 부정확하거나 오해의 소지가 있는 결론으로 이어질 수 있으며, 의도하지 않은 IRI의 역참조로 이어질 수도 있습니다. 참조한 리소스에 대한 신뢰를 데이터의 의도된 사용 민감도와 맞추도록 주의해야 합니다. 잠재적인 의학적 치료에 대한 추론은 여행 계획을 위한 추론과는 다른 수준의 신뢰를 요구할 가능성이 큽니다.

TriG 언어는 임의의 애플리케이션 데이터를 표현하는 데 사용됩니다. 보안 고려사항은 사용 도메인에 따라 달라집니다. 텍스트에 적용 가능한 보안 도구 및 프로토콜 (예: PGP 암호화, 체크섬 검증, 암호로 보호되는 압축)도 TriG 문서에 사용할 수 있습니다. 포함된 정보의 민감도를 반영하는 보안/개인정보 보호 프로토콜이 적용되어야 합니다.

TriG는 RDF Schema 레이블과 같이 사용자에게 표시되는 데이터를 표현할 수 있습니다. 신뢰할 수 없는 TriG 문서에서 가져온 문자열을 렌더링하거나, 이스케이프되지 않은 문자를 사용하는 애플리케이션은 악성 문자열이 독자를 오도하는 데 사용될 가능성을 제한하기 위해 경고 및 기타 적절한 수단을 사용해야 SHOULD 합니다. XML의 미디어 타입 등록에 있는 보안 고려사항([RFC3023] 섹션 10)은 임의 데이터 및 마크업 표현과 관련한 추가 지침을 제공합니다.

TriG는 용어 식별자로 IRI를 사용합니다. TriG로 표현된 데이터를 해석하는 애플리케이션은 Internationalized Resource Identifiers (IRIs) [RFC3987] 섹션 8뿐만 아니라 Uniform Resource Identifier (URI): Generic Syntax [RFC3986] 섹션 7의 보안 문제를 다루어야 SHOULD 합니다.

여러 IRI가 같은 모양을 가질 수 있습니다. 서로 다른 문자 체계의 문자는 비슷해 보일 수 있습니다(예를 들어, 키릴 문자 "о"(코드 포인트 U+043E)는 라틴 문자 "o"(코드 포인트 U+006F)와 비슷해 보일 수 있습니다). 결합 문자가 뒤따르는 문자는 다른 문자와 동일한 시각적 표현을 가질 수 있습니다 (예를 들어, LATIN SMALL LETTER "E"(코드 포인트 U+0065) 뒤에 COMBINING ACUTE ACCENT(코드 포인트 U+0301)가 오는 경우 LATIN SMALL LETTER "E" WITH ACUTE (U+00E9)와 동일한 시각적 표현을 갖습니다). TriG로 데이터를 작성하거나 해석하는 모든 사람 또는 애플리케이션은 의도된 의미와 일치하는 IRI를 사용하고, 비슷해 보일 수 있는 IRI를 피하도록 주의해야 합니다. 시각적으로 유사한 문자를 일치시키는 것에 대한 자세한 정보는 Unicode Security Considerations [UNICODE-SECURITY] 및 Internationalized Resource Identifiers (IRIs) [RFC3987] 섹션 8에서 확인할 수 있습니다.

C. 인터넷 미디어 타입 및 파일 확장자

TriG의 인터넷 미디어 타입(이전에는 MIME 타입으로 알려짐)은 "application/trig"입니다.

TriG 파일은 모든 플랫폼에서 확장자 ".trig"(모두 소문자)를 갖는 것이 권장됩니다.

다음 정보는 IANA의 검토, 승인 및 등록을 위해 Internet Engineering Steering Group(IESG)에 제출되었습니다.

타입 이름:
application
하위 타입 이름:
trig
필수 매개변수:
없음
선택적 매개변수:
version
이 매개변수는 선택 사항입니다. 존재하는 경우 version의 허용 가능한 값은 [RDF12-CONCEPTS]의 2.1 버전 레이블에 정의됩니다.
profile
이 매개변수는 선택 사항이며 추가 정보를 포함하는 데 사용됩니다. 프로필에 대한 지식 없이 처리될 때 리소스 표현의 의미를 변경하지 않습니다. profile 매개변수의 값은 공백으로 구분된 URI의 비어 있지 않은 목록입니다. 자세한 정보와 배경은 [RFC6906]을 참조하십시오.
인코딩 고려사항:
TriG의 구문은 Unicode [UNICODE]의 코드 포인트 위에서 표현됩니다. 인코딩은 항상 UTF-8 [UTF-8]입니다.
Unicode 코드 포인트는 X가 16진수 숫자 [0-9A-Fa-f]인 \uXXXX(U+0000부터 U+FFFF까지) 또는 \UXXXXXXXX 구문(U+10000 이후)에 의해 표현될 수도 있습니다.
보안 고려사항:
B. 보안 고려사항을 참조하십시오.
상호운용성 고려사항:
알려진 상호운용성 문제는 없습니다.
게시된 명세:
이 명세.
이 미디어 타입을 사용하는 애플리케이션:
TriG는 RDF 데이터를 표현하는 데 널리 사용됩니다. 대부분의 일반적인 프로그래밍 언어에서 구현을 사용할 수 있습니다.
추가 정보:
매직 넘버:
TriG 문서는 문서 시작 부분 근처에 문자열 'prefix' 또는 'base'(대소문자 무관)를 포함할 수 있습니다.
파일 확장자:
.trig
기준 URI:
TriG base 지시문은 문서의 뒤쪽에서 순차적으로 사용되는 언어 내 상대 IRI 참조에 대한 현재 기준 URI를 변경할 수 있습니다.
추가 정보를 위한 연락 담당자 및 이메일 주소:
W3C RDF & SPARQL Working Group <public-rdf-star-wg@w3.org>
의도된 사용:
일반
사용 제한:
없음
작성자:
TriG 명세는 RDF & SPARQL WG의 산출물입니다. W3C는 이 명세에 대한 변경 관리 권한을 보유합니다.
참고

profile 매개변수는 클라이언트가 콘텐츠 협상 과정에서 자신의 선호를 표현하고, 서버가 응답에 대한 추가 정보를 나타내는 데 사용할 수 있습니다.

클라이언트가 profile 매개변수를 제공한 경우, 서버는 서버가 인식하는 목록의 모든 프로필을 존중하는 문서를 반환해야 합니다. 서버는 profile 값만을 근거로 오류로 응답해서는 안 됩니다.

서버가 profile 매개변수를 제공한 경우, 클라이언트는 이를 무시하도록 선택할 수 있습니다.

참고

profile URI는 역참조 가능하고 해당 URI에서 유용한 문서를 제공하는 것이 권장됩니다.

참고

profile 매개변수가 미디어 타입 매개변수 [RFC4288]로서 HTTP Content-Type 헤더 또는 HTTP Accept 헤더 [RFC7231]에서 사용될 때, profile 매개변수의 값에 공백과 같은 특수 문자가 포함되어 있으면 (여러 profile URI를 구분하는 데 사용된 공백 포함) ASCII "로 둘러싸야 합니다.

profile 매개변수의 값에는 하나 이상의 URI가 포함되며 IRI가 아니라는 점에 유의하는 것이 중요합니다. 따라서 [RFC3987]의 섹션 3 IRI와 URI의 관계에 지정된 대로 IRI와 URI 사이를 변환해야 할 수 있습니다.

D. 감사의 말

이 섹션은 비규범적입니다.

D.1 RDF 1.1에 대한 감사의 말

이 섹션은 비규범적입니다.

편집자들은 원래 TriG 명세를 만든 Chris Bizer와 Richard Cyganiak의 작업에 깊이 감사드립니다. Gregg Kellogg, Eric Prud'hommeaux 및 Sandro Hawke가 이 버전에 귀중한 기여를 했습니다.

이 문서는 더 넓은 커뮤니티의 검토 과정을 통해 개선되었습니다.

D.2 RDF 1.2에 대한 감사의 말

이 섹션은 비규범적입니다.

편집자들 외에도 다음 사람들이 이 명세에 기여했습니다: Andy Seaborne, Denis Ah-Kang, Niklas Lindström, Peter F. Patel-Schneider, Pierre-Antoine Champin, Ted Thibodeau Jr, and Thomas Tanon

RDF & SPARQL Working Group Group의 구성원에는 다음이 포함되었습니다.
James Anderson, Dörthe Arndt, Jerven Bolleman, Erich Bremer, Pierre-Antoine Champin, Souripriya Das, Enrico Franconi, Adrian Gschwend, Olaf Hartig, Gregg Kellogg†, Ora Lassila, Niklas Lindström, Thomas Lörtsch, Peter Patel-Schneider, Dave Raggett, Felix Sasaki, Andy Seaborne, Ruben Taelman, Thomas Pellissier Tanon, Ted Thibodeau Jr, Dominik Tomaszuk, Gregory Williams, William Van Woensel, and Antoine Zimmermann
† Gregg Kellogg는 2025년 9월에 세상을 떠났습니다. RDF와 관련 표준의 더 넓은 생태계에 대한 그의 방대한 기여에 깊이 감사드립니다.

편집자 주

Task Force 구성원을 인정할까요? 기여자 목록을 찾기가 쉽지 않습니다.

E. RDF 1.1과 RDF 1.2 사이의 변경 사항

이 섹션은 비규범적입니다.

이 섹션은 RDF 1.1 권고안과의 주요 차이점을 설명합니다.

이 명세는 RDF 1.1 TriG [TRIG]에서 정의된 원래 TriG 구문을 확장하여, RDF 1.2 Concepts and Abstract Data Model [RDF12-CONCEPTS]에서 도입된 새 기능을 지원합니다. 이 확장은 완전한 하위 호환성을 가집니다. 이전 버전을 준수하는 모든 문서는 새 버전도 준수하며 동일한 그래프로 구문 분석됩니다. 또한 새 버전을 준수하고 RDF 1.1 기능만 포함하는 모든 문서도 이전 버전과 호환됩니다 (VERSION 지시문은 예외입니다. 2.1 버전 선언 참조). 마지막으로, 새로운 구문 구성 중 어느 것도 이전 구문에서는 유효하지 않습니다. 이는 RDF 1.2 기능을 사용하는 모든 TriG 문서가 이 명세의 이전 버전을 준수하지 않으며, 그 버전에서 다른 그래프로 해석될 수 없음을 의미합니다.

보다 구체적으로, 다음과 같은 변경 사항이 적용되었습니다.

F. 색인

F.1 이 명세가 정의하는 용어

F.2 참조로 정의된 용어

G. 참고 문헌

G.1 규범 참고 문헌

[BCP47]
Tags for Identifying Languages. A. Phillips, Ed.; M. Davis, Ed. IETF. 2009년 9월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc5646
[EBNF-NOTATION]
EBNF Notation. Tim Bray; Jean Paoli; Michael Sperberg-McQueen; Eve Maler; François Yergeau et al. W3C. W3C Recommendation. URL: https://www.w3.org/TR/xml/#sec-notation
[I18N-GLOSSARY]
Internationalization Glossary. Richard Ishida; Addison Phillips. W3C. 2024년 10월 17일. W3C Working Group Note. URL: https://www.w3.org/TR/i18n-glossary/
[RDF12-CONCEPTS]
RDF 1.2 Concepts and Abstract Data Model. Andy Seaborne; Gregg Kellogg; Olaf Hartig; Pierre-Antoine Champin. W3C. 2026년 4월 7일. W3C Candidate Recommendation. URL: https://www.w3.org/TR/rdf12-concepts/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997년 3월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC3629]
UTF-8, a transformation format of ISO 10646. F. Yergeau. IETF. 2003년 11월. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc3629
[RFC3986]
Uniform Resource Identifier (URI): Generic Syntax. T. Berners-Lee; R. Fielding; L. Masinter. IETF. 2005년 1월. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc3986
[RFC3987]
Internationalized Resource Identifiers (IRIs). M. Duerst; M. Suignard. IETF. 2005년 1월. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc3987
[RFC6906]
The 'profile' Link Relation Type. E. Wilde. IETF. 2013년 3월. Informational. URL: https://www.rfc-editor.org/rfc/rfc6906
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. 2017년 5월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[UNICODE]
The Unicode Standard. Unicode Consortium. URL: https://www.unicode.org/versions/latest/

G.2 참고용 참고 문헌

[LANG-SUBTAG-REGISTRY]
Language Subtag Registry. IANA. URL: http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
[RDF12-INTEROP]
RDF 1.2 Interoperability. Pierre-Antoine Champin. W3C. W3C Editor's Draft. URL: https://w3c.github.io/rdf-interop/spec/
[RDF12-N-QUADS]
RDF 1.2 N-Quads. Gregg Kellogg; Dominik Tomaszuk. W3C. 2026년 5월 28일. W3C Working Draft. URL: https://www.w3.org/TR/rdf12-n-quads/
[RDF12-N-TRIPLES]
RDF 1.2 N-Triples. Gregg Kellogg; Dominik Tomaszuk. W3C. 2026년 5월 15일. W3C Working Draft. URL: https://www.w3.org/TR/rdf12-n-triples/
[RDF12-NEW]
What’s New in RDF 1.2. The W3C RDF & SPARQL Working Group. W3C. W3C Editor's Draft. URL: https://w3c.github.io/rdf-new/spec/
[RDF12-PRIMER]
RDF 1.2 Primer. Pierre-Antoine Champin; Niklas Lindström. W3C. 2026년 4월 16일. DNOTE. URL: https://www.w3.org/TR/rdf12-primer/
[RDF12-SCHEMA]
RDF 1.2 Schema. Dominik Tomaszuk. W3C. 2026년 3월 28일. W3C Working Draft. URL: https://www.w3.org/TR/rdf12-schema/
[RDF12-SEMANTICS]
RDF 1.2 Semantics. Peter Patel-Schneider; Enrico Franconi; Dörthe Arndt. W3C. 2026년 4월 7일. W3C Candidate Recommendation. URL: https://www.w3.org/TR/rdf12-semantics/
[RDF12-TURTLE]
RDF 1.2 Turtle. Gregg Kellogg; Andy Seaborne; Dominik Tomaszuk. W3C. 2026년 5월 28일. W3C Working Draft. URL: https://www.w3.org/TR/rdf12-turtle/
[RDF12-XML]
RDF 1.2 XML Syntax. Gregg Kellogg; Jerven Bolleman. W3C. 2026년 4월 9일. W3C Working Draft. URL: https://www.w3.org/TR/rdf12-xml/
[RFC3023]
XML Media Types. M. Murata; S. St. Laurent; D. Kohn. IETF. 2001년 1월. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc3023
[RFC4288]
Media Type Specifications and Registration Procedures. N. Freed; J. Klensin. IETF. 2005년 12월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc4288
[RFC7231]
Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. R. Fielding, Ed.; J. Reschke, Ed. IETF. 2014년 6월. Proposed Standard. URL: https://httpwg.org/specs/rfc7231.html
[SPARQL12-CONCEPTS]
SPARQL 1.2 Concepts. The W3C RDF & SPARQL Working Group. W3C. W3C Editor's Draft. URL: https://w3c.github.io/sparql-concepts/spec/
[SPARQL12-ENTAILMENT]
SPARQL 1.2 Entailment Regimes. Peter Patel-Schneider. W3C. 2026년 4월 9일. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-entailment/
[SPARQL12-FEDERATED-QUERY]
SPARQL 1.2 Federated Query. Ruben Taelman; Gregory Williams. W3C. 2026년 4월 23일. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-federated-query/
[SPARQL12-GRAPH-STORE-PROTOCOL]
SPARQL 1.2 Graph Store Protocol. Andy Seaborne; Thomas Pellissier Tanon. W3C. 2024년 12월 19일. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-graph-store-protocol/
[SPARQL12-NEW]
What’s New in SPARQL 1.2. The W3C RDF & SPARQL Working Group. W3C. W3C Editor's Draft. URL: https://w3c.github.io/sparql-new/spec/
[SPARQL12-PROTOCOL]
SPARQL 1.2 Protocol. Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon. W3C. 2026년 4월 26일. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-protocol/
[SPARQL12-QUERY]
SPARQL 1.2 Query Language. Olaf Hartig; Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon. W3C. 2026년 5월 28일. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-query/
[SPARQL12-RESULTS-CSV-TSV]
SPARQL 1.2 Query Results CSV and TSV Formats. Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon. W3C. 2026년 3월 28일. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-results-csv-tsv/
[SPARQL12-RESULTS-JSON]
SPARQL 1.2 Query Results JSON Format. Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon. W3C. 2026년 3월 28일. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-results-json/
[SPARQL12-RESULTS-XML]
SPARQL 1.2 Query Results XML Format. Ruben Taelman; Dominik Tomaszuk; Thomas Pellissier Tanon. W3C. 2024년 12월 27일. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-results-xml/
[SPARQL12-SERVICE-DESCRIPTION]
SPARQL 1.2 Service Description. Ruben Taelman; Gregory Williams. W3C. 2026년 4월 23일. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-service-description/
[SPARQL12-UPDATE]
SPARQL 1.2 Update. Ruben Taelman; Andy Seaborne; Thomas Pellissier Tanon. W3C. 2026년 4월 23일. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-update/
[TRIG]
RDF 1.1 TriG. Gavin Carothers; Andy Seaborne. W3C. 2014년 2월 25일. W3C Recommendation. URL: https://www.w3.org/TR/trig/
[UNICODE-SECURITY]
Unicode Security Considerations. Mark Davis; Michel Suignard. Unicode Consortium. 2014년 9월 19일. Unicode Technical Report #36. URL: https://www.unicode.org/reports/tr36/tr36-15.html