RDF 1.2 XML 구문

W3C 작업 초안

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2026/WD-rdf12-xml-20260618/
최신 발행 버전:
https://www.w3.org/TR/rdf12-xml/
최신 편집자 초안:
https://w3c.github.io/rdf-xml/spec/
이력:
https://www.w3.org/standards/history/rdf12-xml/
커밋 이력
테스트 스위트:
https://w3c.github.io/rdf-tests/rdf/rdf12/rdf-xml/
최신 권고안:
https://www.w3.org/TR/rdf-syntax-grammar
편집자:
Gregg Kellogg (2025-09-06까지), 추모
Jerven Bolleman
이전 편집자:
Fabien Gandon
Guus Schreiber
Dave Beckett
Ora Lassilla
Ralph Swick
저자:
Dave Beckett
피드백:
GitHub w3c/rdf-xml (풀 리퀘스트, 새 이슈, 열린 이슈)
public-rdf-star-wg@w3.org 로 제목 줄에 [rdf12-xml] … 메시지 주제 …를 포함해 보내십시오(아카이브)

초록

리소스 기술 프레임워크 (RDF)는 웹에서 정보를 표현하기 위한 범용 언어입니다.

이 문서는 XML 네임스페이스, XML 정보 집합 [XML-INFOSET] 및 XML Base [XMLBASE]에 따라 RDF/XML이라고 하는 RDF용 XML 구문을 정의합니다.

RDF 1.2 XML 구문은 트리플 용어를 다른 트리플목적어로 사용할 수 있는 네 번째 종류의 RDF 용어로 도입하여, 다른 문장에 대한 문장을 만들 수 있게 합니다. 트리플 용어는 일반적으로 주석 구조가 선호되므로 명시적으로는 잘 사용되지 않습니다. RDF 1.2 XML 구문은 또한 방향성이 있는 언어 태그 문자열에 대한 지원도 추가합니다.

이 문서의 상태

이 섹션은 발행 당시의 이 문서의 상태를 설명합니다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 찾을 수 있습니다.

이 문서는 RDF 1.2 문서 모음의 일부입니다. 이 문서는 RDF [RDF12-CONCEPTS]를 위한 구체적인 구문인 RDF/XML 구문을 정의합니다.

[rdf-syntax-grammar] 이후 이 문서에는 실질적인 변경 사항이 없습니다. 사소한 편집상 변경이 있는 경우 B. RDF 1.1과 RDF 1.2 사이의 변경 사항에 자세히 설명되어 있습니다.

이 문서는 RDF & SPARQL 워킹 그룹권고안 트랙을 사용하여 작업 초안으로 발행했습니다.

작업 초안으로 발행되었다고 해서 W3C 및 그 회원의 승인을 의미하지는 않습니다.

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

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

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

1. 소개

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

이 문서는 RDF 그래프를 위한 XML [XML11] 구문을 정의합니다.

이 문서는 XML의 다소 저수준 세부 사항, 예를 들어 특정한 빈 요소 형식에서 벗어나도록 XML Information Set [XML-INFOSET] 정보 항목의 관점에서 원래의 RDF/XML 문법 [RDF-SYNTAX-GRAMMAR-19990222]을 개정합니다. 이를 통해 문법을 더 정확하게 기록하고 XML 구문에서 RDF 그래프로의 매핑을 더 명확하게 보여줄 수 있습니다. RDF 그래프로의 매핑은 N-Triples [RDF12-N-TRIPLES] 형식으로 문장을 내보내어 수행됩니다.

역사적 관점을 포함한 RDF/XML 구문에 대한 더 긴 소개는 "RDF: Understanding the Striped RDF/XML Syntax" [STRIPEDRDF]를 참조하십시오.

2. RDF를 위한 XML 구문

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

이 섹션은 RDF/XML 구문을 소개하고, 이 구문이 RDF 그래프를 어떻게 인코딩하는지 설명하며, 이를 예제로 설명합니다. 이 비공식 설명과 5. 구문 데이터 모델6. RDF/XML 문법 섹션의 구문 및 문법에 대한 형식적 설명 사이에 충돌이 있는 경우, 후자의 두 섹션이 우선합니다.

2.1 소개

RDF Concepts and Abstract Syntax 문서 [RDF12-CONCEPTS]는 RDF 데이터 모델과 RDF 추상 구문을 정의합니다. RDF Semantics [RDF12-SEMANTICS]와 함께 이는 그에 대한 형식적 의미론을 갖춘 추상 구문을 제공합니다. RDF 데이터 모델은 노드와 노드 쌍을 연결하는 레이블이 있는 방향성 아크를 가지며, 이는 각 트리플이 주어 노드, 술어, 목적어 노드를 포함하는 RDF 트리플의 집합으로 표현됩니다. 노드는 IRI, 리터럴 또는 빈 노드입니다. 빈 노드에는 빈 노드 식별자라고 하는 문서 로컬 식별자가 주어질 수 있습니다. 술어는 IRI이며, 두 노드 사이의 관계로 해석되거나, 어떤 주어 노드에 대한 어트리뷰트 값(목적어 노드)을 정의하는 것으로 해석될 수 있습니다.

그래프를 XML로 인코딩하려면 노드와 술어가 XML 용어, 즉 요소 이름, 어트리뷰트 이름, 요소 콘텐츠 및 어트리뷰트 값으로 표현되어야 합니다. RDF/XML은 QName을 XML XML-NAMES에 정의된 대로 사용하여 IRI를 표현합니다. 모든 QName에는 네임스페이스 이름이 있으며, 이는 IRI이고, 짧은 로컬 이름을 가집니다. 또한 QName은 짧은 접두사를 가질 수도 있고, 기본 네임스페이스 선언으로 선언되어 접두사가 없을 수도 있습니다(그러나 여전히 네임스페이스 이름은 가집니다)

IRIQName으로 표현되며, QName의 로컬 이름 부분을 QName의 네임스페이스 이름 (IRI) 부분 뒤에 붙여 결정됩니다. 이는 모든 술어와 일부 노드의 IRI를 줄이는 데 사용됩니다. 주어 노드와 목적어 노드를 식별하는 IRI도 XML 어트리뷰트 값으로 저장될 수 있습니다. 목적어 노드로만 쓰일 수 있는 RDF 리터럴은 XML 요소 텍스트 콘텐츠 또는 XML 어트리뷰트 값이 됩니다.

그래프는 노드, 술어 아크, 노드, 술어 아크, 노드, 술어 아크, ... 노드 형식의 경로 모음으로 간주할 수 있으며, 이 경로들이 전체 그래프를 덮습니다. RDF/XML에서 이것들은 노드용 요소와 술어 아크용 요소가 번갈아 나타나는 요소 내부의 요소 시퀀스로 바뀝니다. 이것은 node/arc stripes의 시리즈라고 불려 왔습니다. 시퀀스의 시작 노드는 가장 바깥쪽 요소가 되고, 다음 술어 아크는 자식 요소가 되는 식입니다. stripes는 일반적으로 RDF/XML 문서의 맨 위에서 시작하며 항상 노드로 시작합니다.

다음 섹션에서는 완전한 RDF/XML 문서에 이르기까지 여러 RDF/XML 예제를 단계적으로 제공합니다. 예제 7이 첫 번째 완전한 RDF/XML 문서입니다.

2.2 노드 요소와 속성 요소

RDF/XML 예제 4의 그래프.
그림 1 예제 4에 설명된 RDF/XML 예제의 그래프.

그림 1에는 RDF 그래프가 제시되어 있으며, 여기서 노드들은 그들이 가진 IRI를 포함한 타원으로 표현되고, 모든 술어 아크에는 IRI가 레이블로 붙어 있으며, 문자열 리터럴 노드는 사각형으로 표시되어 있습니다.

그림 2에 표시된 그래프를 통해 노드, 술어 아크 ... , 노드 경로 하나를 따라가면 다음과 같습니다:

RDF/XML 예제 4의 그래프를 통과하는 하나의 경로.
그림 2 예제 4에 설명된 그래프를 통과하는 하나의 경로로, <https://www.w3.org/TR/rdf12-xml/>에서 <https://greggkellogg.net/>까지의 경로를 강조합니다. 경로상의 요소는 굵은 텍스트로 표시됩니다.

그림 2의 왼쪽 그래프는 다음 node/predicate arc stripes에 해당합니다:

  1. IRI https://www.w3.org/TR/rdf12-xml/를 가진 노드
  2. IRI http://example.org/terms/editor가 레이블로 붙은 술어 아크
  3. IRI가 없는 노드
  4. IRI http://example.org/terms/homePage가 레이블로 붙은 술어 아크
  5. IRI https://greggkellogg.net/를 가진 노드

RDF/XML에서 그림 2의 왼쪽에 있는 5개의 노드 및 술어 아크 시퀀스는 그래프 노드와 술어 아크를 위한 두 가지 유형의 XML 요소 다섯 개 사용에 해당합니다. 이것들은 관례적으로 각각 노드 요소속성 요소라고 합니다. 예제 1에 표시된 striping에서 rdf:Description노드 요소(세 노드에 대해 세 번 사용됨)이고, ex:editorex:homePage는 두 속성 요소입니다.

예제 1: Striped RDF/XML (노드와 술어 아크)

<span class="hl-bold"><rdf:Description></span>
<ex:editor>
  <span class="hl-bold"><rdf:Description></span>
    <ex:homePage>
      <rdf:Description>
      </rdf:Description>
    </ex:homePage>
  <span class="hl-bold"></rdf:Description></span>
</ex:editor>
<span class="hl-bold"></rdf:Description></span>

그림 2의 그래프는 IRI인 일부 노드(및 그렇지 않은 다른 노드, 즉 빈 노드 요소)로 구성되며, 이것은 노드 요소의 rdf:about 어트리뷰트를 사용하여 RDF/XML에 추가할 수 있고, 그 결과는 예제 2와 같습니다:

예제 2: IRI가 추가된 노드 요소

<rdf:Description rdf:about="https://www.w3.org/TR/rdf12-xml/">
  <ex:editor>
    <rdf:Description>
      <ex:homePage>
        <rdf:Description rdf:about="https://greggkellogg.net/">
        </rdf:Description>
      </ex:homePage>
    </rdf:Description>
  </ex:editor>
</rdf:Description>

그림 1 그래프를 통과하는 다른 두 경로를 예제 2RDF/XML에 추가하면 예제 3에 표시된 결과가 됩니다 (이 예제는 빈 노드가 두 경로 사이에서 공유된다는 것을 보여주지 못합니다. 2.11 빈 노드 식별: rdf:nodeID 참조):

예제 3: 모든 그래프 경로에 대한 완전한 설명

<rdf:Description rdf:about="https://www.w3.org/TR/rdf12-xml/">
  <ex:editor>
    <rdf:Description>
      <ex:homePage>
        <rdf:Description rdf:about="https://greggkellogg.net/">
        </rdf:Description>
      </ex:homePage>
    </rdf:Description>
  </ex:editor>
</rdf:Description>

<rdf:Description rdf:about="https://www.w3.org/TR/rdf12-xml/">
  <ex:editor>
    <rdf:Description>
      <ex:fullName>Gregg Kellogg</ex:fullName>
    </rdf:Description>
  </ex:editor>
</rdf:Description>

<rdf:Description rdf:about="https://www.w3.org/TR/rdf12-xml/">
  <dc:title>RDF 1.2 XML Syntax</dc:title>
</rdf:Description>

2.3 여러 속성 요소

일반적인 사용을 더 쉽게 작성할 수 있도록 여러 축약형을 사용할 수 있습니다. 특히 RDF 그래프의 주어 노드가 여러 개의 나가는 술어 아크를 가지는 것은 흔합니다. RDF/XML은 리소스에 대한 노드 요소가 여러 속성 요소를 가질 때 해당 구문에 대한 축약형을 제공합니다. 이는 주어 노드를 설명하는 노드 요소 안에 여러 자식 속성 요소를 사용하여 축약할 수 있습니다.

예제 3을 보면, 여러 속성 요소를 가질 수 있는 두 노드 요소가 있습니다. IRI https://www.w3.org/TR/rdf12-xml/를 가진 주어 노드는 속성 요소 ex:editordc:title을 가지며, 빈 노드에 대한 노드 요소ex:homePageex:fullName을 가질 수 있습니다. 이 축약형은 예제 4에 표시된 결과를 제공합니다 (이 예제는 단일 빈 노드가 있음을 보여줍니다):

예제 4: 노드 요소에 여러 속성 요소 사용

<rdf:Description rdf:about="https://www.w3.org/TR/rdf12-xml/">
  <ex:editor>
    <rdf:Description>
      <ex:homePage>
        <rdf:Description rdf:about="https://greggkellogg.net/">
        </rdf:Description>
      </ex:homePage>
      <ex:fullName>Gregg Kellogg</ex:fullName>
    </rdf:Description>
  </ex:editor>
  <dc:title>RDF 1.2 XML Syntax</dc:title>
</rdf:Description>

2.4 빈 속성 요소

RDF 그래프의 술어 아크가 더 이상의 술어 아크를 가지지 않는 목적어 노드를 가리킬 때, 이는 RDF/XML에서 빈 노드 요소 <rdf:Description rdf:about="..."> </rdf:Description> (또는 <rdf:Description rdf:about="..." />)로 나타나며, 이 형식은 더 줄일 수 있습니다. 이는 목적어 노드의 IRI를 포함하는 속성 요소의 XML 어트리뷰트 rdf:resource 값으로 사용하고, 그 속성 요소를 비워서 수행합니다.

이 예제에서 속성 요소 ex:homePageIRI https://greggkellogg.net/를 가진 빈 노드 요소를 포함합니다. 이는 예제 5에 표시된 결과를 제공하는 빈 속성 요소 형식으로 대체할 수 있습니다:

예제 5: 빈 속성 요소
 
<rdf:Description rdf:about="https://www.w3.org/TR/rdf12-xml/">
  <ex:editor>
    <rdf:Description>
      <ex:homePage rdf:resource="https://greggkellogg.net/"/>
      <ex:fullName>Gregg Kellogg</ex:fullName>
    </rdf:Description>
  </ex:editor>
  <dc:title>RDF 1.2 XML Syntax</dc:title>
</rdf:Description>
 

2.5 속성 어트리뷰트

속성 요소의 콘텐츠가 문자열 리터럴인 경우, 그것을 포함하는 노드 요소의 XML 어트리뷰트로 사용할 수 있을 수 있습니다. 같은 노드 요소에 있는 여러 속성에 대해 이렇게 할 수 있는 것은 속성 요소 이름이 반복되지 않고 (XML에서 요구됨 — XML 요소의 어트리뷰트 이름은 고유함) 속성 요소의 문자열 리터럴에 적용되는 범위 내 xml:lang이 (있는 경우) 모두 동일할 때만 가능합니다 (2.7 언어: xml:lang 참조). 이 축약형은 속성 어트리뷰트라고 알려져 있으며, 모든 노드 요소에 적용할 수 있습니다.

이 축약형은 속성 요소rdf:type이고 rdf:resource 어트리뷰트를 가지며, 그 값이 IRI 목적어 노드로 해석될 때에도 사용할 수 있습니다.

예제 5에는 문자열 리터럴 콘텐츠를 가진 두 속성 요소, 즉 dc:titleex:fullName 속성 요소가 있습니다. 이들은 속성 어트리뷰트로 대체될 수 있으며, 그 결과는 예제 6에 표시됩니다:

예제 6: 문자열 리터럴 콘텐츠가 있는 속성 요소를 속성 어트리뷰트로 대체하기

<rdf:Description rdf:about="https://www.w3.org/TR/rdf12-xml/"
           dc:title="RDF 1.2 XML Syntax">
  <ex:editor>
    <rdf:Description ex:fullName="Gregg Kellogg">
      <ex:homePage rdf:resource="https://greggkellogg.net/"/>
    </rdf:Description>
  </ex:editor>
</rdf:Description>

2.6 문서 완성: 문서 요소와 XML 선언

완전한 RDF/XML 문서를 만들기 위해, 그래프의 XML 직렬화는 보통 최상위 XML 문서 요소가 되는 rdf:RDF XML 요소 안에 포함됩니다. 관례적으로 rdf:RDF 요소는 사용되는 XML 네임스페이스를 선언하는 데에도 사용되지만, 이것이 필수는 아닙니다. rdf:RDF 안에 최상위 노드 요소가 하나만 있는 경우, rdf:RDF는 생략할 수 있지만, 모든 XML 네임스페이스는 여전히 선언되어야 MUST 합니다.

XML 명세는 또한 문서 맨 위에 XML 버전과, 경우에 따라 XML 콘텐츠 인코딩을 포함한 XML 선언을 허용합니다. 이는 선택 사항이지만 권장됩니다.

RDF/XML 완성은 예제 4 이후의 올바른 완전한 그래프 예제 중 어느 것에도 적용할 수 있지만, 가장 작은 예제 6을 가져와 최종 구성요소를 추가하면, 예제 7에서 원래 그림 1 그래프의 완전한 RDF/XML 표현이 됩니다:

예제 7에서는 rdf:RDF 안에 rdf:Description이 하나만 있으므로 rdf:RDF를 생략할 수 있지만, 여기에는 표시하지 않습니다.

2.7 언어: xml:lang

RDF/XML은 콘텐츠 언어의 식별을 허용하기 위해 XML 1.1 [XML11]의 2.12 Language Identification에 정의된 xml:lang 어트리뷰트 사용을 허용합니다. xml:lang 어트리뷰트는 포함된 콘텐츠가 지정된 언어임을 나타내기 위해 모든 노드 요소 또는 속성 요소에 사용할 수 있습니다. 형식 지정 리터럴XML 리터럴을 포함하여 이 어트리뷰트의 영향을 받지 않습니다. 존재하는 경우 가장 구체적인 범위 내 언어가 속성 요소 문자열 리터럴 콘텐츠 또는 속성 어트리뷰트 값에 적용됩니다. xml:lang="" 형식은 언어 식별자가 없음을 나타냅니다.

RDF 속성에 대한 콘텐츠 언어 표시의 몇 가지 예는 예제 8에 표시되어 있습니다:

2.8 기본 방향: its:dir

RDF 1.2는 기본 방향이라는 개념을 도입하며, 이는 방향성이 있는 언어 태그 문자열을 만들기 위해 언어 태그 문자열의 초기 텍스트 방향을 지정하는 데 사용할 수 있습니다. 이는 모든 노드 요소 또는 속성 요소its:dir 어트리뷰트를 추가하여 지정되며, 여기서 its는 ITS 네임스페이스 http://www.w3.org/2005/11/its에 사용되는 일반적인 접두사입니다. its:dir에 지원되는 값은 방향성이 있는 언어 태그 문자열에 필요한 "ltr""rtl"입니다.

RDF 속성에 대한 기본 방향 표시의 몇 가지 예는 예제 9에 표시되어 있습니다:

참고

its:dir 어트리뷰트는 최상위 XML 문서 요소its:version="2.0"으로 표시된 것처럼 [ITS20]의 버전 2.0에 구체적으로 연결됩니다.

2.9 XML 리터럴: rdf:parseType="Literal"

RDF는 XML 리터럴 [RDF12-CONCEPTS]이 술어의 목적어 노드로 주어지는 것을 허용합니다. 이것들은 RDF/XML에서 속성 요소의 콘텐츠로 작성되며 (속성 어트리뷰트가 아님), 포함하는 속성 요소rdf:parseType="Literal" 어트리뷰트를 사용하여 표시됩니다.

XML 리터럴을 작성하는 예는 예제 10에 제공되어 있으며, 여기에는 주어 노드 IRI http://example.org/item01, 술어 IRI http://example.org/stuff/1.0/prop (ex:prop에서 유래) 및 XML 리터럴 콘텐츠가 a:Box로 시작하는 목적어 노드를 가진 단일 RDF 트리플이 있습니다.

2.10 형식 지정 리터럴: rdf:datatype

RDF는 형식 지정 리터럴이 술어의 목적어 노드로 주어지는 것을 허용합니다. 형식 지정 리터럴은 리터럴 문자열과 데이터형 IRI로 구성됩니다. 이것들은 RDF/XML에서 속성 요소 형식의 리터럴 문자열 노드와 동일한 구문을 사용하여 작성됩니다 (속성 어트리뷰트가 아님). 다만 속성 요소rdf:datatype="datatypeURI" 어트리뷰트를 추가합니다. 이 어트리뷰트에는 어떤 IRI도 사용할 수 있습니다.

RDF 형식 지정 리터럴의 예는 예제 11에 제공되어 있으며, 여기에는 주어 노드 IRI http://example.org/item01, 술어 IRI http://example.org/stuff/1.0/size (ex:size에서 유래) 및 XML Schema [XMLSCHEMA11-2] 데이터형 int로 해석될 형식 지정 리터럴 ("123", http://www.w3.org/2001/XMLSchema#int)을 가진 목적어 노드가 포함된 단일 RDF 트리플이 있습니다.

2.11 빈 노드 식별: rdf:nodeID

RDF빈 노드는 서로 구별되지만 IRI는 없습니다. 때로는 동일한 빈 노드가 여러 RDF 트리플의 주어 및 목적어처럼 RDF/XML의 여러 위치에서 참조되어야 합니다. 이 경우 해당 빈 노드를 문서에서 식별하기 위해 빈 노드 식별자를 부여할 수 있습니다. RDF/XML의 빈 노드 식별자는 포함하는 XML Information Set [XML-INFOSET] 문서 정보 항목으로 범위가 한정됩니다. 빈 노드 식별자노드 요소에서 rdf:about="IRI"를 대체하거나, 속성 요소에서 rdf:resource="IRI"를 대체하기 위해, 두 경우 모두 rdf:nodeID="blank node identifier"로 사용됩니다.

예제 7을 가져와 그 안의 빈 노드에 abc라는 빈 노드 식별자를 명시적으로 부여하면 예제 12에 표시된 결과가 됩니다. 두 번째 rdf:Description 속성 요소빈 노드에 관한 것입니다.

2.12 빈 노드 생략: rdf:parseType="Resource"

RDF 그래프빈 노드(IRI 노드가 아님)는 <rdf:Description> </rdf:Description> 쌍을 생략할 수 있는 형식으로 작성할 수 있습니다. 이 생략은 포함하는 속성 요소rdf:parseType="Resource" 어트리뷰트를 넣어 수행되며, 이것은 속성 요소를 속성-및-노드 요소로 바꿉니다. 이 요소는 그 자체로 속성 요소속성 어트리뷰트를 모두 가질 수 있습니다. 속성 어트리뷰트rdf:nodeID 어트리뷰트는 속성-및-노드 요소에서 허용되지 않습니다.

앞의 예제 7을 보면, ex:editor 속성 요소의 콘텐츠를 이 방식으로 대체하여 예제 13에 표시된 형식으로 만들 수 있습니다:

2.13 노드 생략: 빈 속성 요소의 속성 어트리뷰트

빈 노드 요소에 있는 모든 속성 요소가 동일한 범위 내 xml:lang 값(있는 경우)을 가진 문자열 리터럴 값을 가지고, 각각의 속성 요소가 최대 한 번만 나타나며, IRI 목적어 노드를 가진 rdf:type 속성 요소가 최대 하나만 있는 경우, 이들을 포함하는 속성 요소에 속성 어트리뷰트로 옮기고 해당 속성 요소를 빈 요소로 만들어 축약할 수 있습니다.

앞의 예제 5를 보면, ex:editor 속성 요소는 두 개의 속성 요소 ex:fullnameex:homePage를 가진 빈 노드 요소를 포함합니다. ex:homePage는 문자열 리터럴 값을 가지지 않으므로 여기에는 적합하지 않으며, 따라서 이 예제의 목적상 무시됩니다. 축약 형식은 ex:fullName 속성 요소를 제거하고, 삭제된 속성 요소의 문자열 리터럴 값을 가진 새 속성 어트리뷰트 ex:fullNameex:editor 속성 요소에 추가합니다. 빈 노드 요소는 이제 빈 ex:editor 속성 요소 안에 암시됩니다. 결과는 예제 14에 표시되어 있습니다.

2.14 형식 지정 노드 요소

RDF 그래프에는 주어 노드에서 나오는 rdf:type 술어가 흔히 있습니다. 이것들은 그래프에서는 관례적으로 형식 지정 노드라고 하고, RDF/XML에서는 형식 지정 노드 요소라고 합니다. RDF/XML은 rdf:Description 노드 요소 이름을 타입 관계 값의 IRI에 해당하는 네임스페이스 요소로 대체하여 그러한 트리플을 더 간결하게 표현할 수 있게 합니다. 물론 여러 rdf:type 술어가 있을 수 있지만, 이 방식으로 사용할 수 있는 것은 하나뿐이며, 나머지는 속성 요소 또는 속성 어트리뷰트로 남아 있어야 MUST 합니다.

형식 지정 노드 요소는 RDF/XML에서 RDF 어휘에 있는 내장 클래스와 함께 흔히 사용됩니다: rdf:Seq, rdf:Bag, rdf:Alt, rdf:Statement, rdf:Propertyrdf:List.

예를 들어 15RDF/XML은 예제 16에 표시된 것처럼 작성할 수 있습니다.

2.15 IRI 축약: rdf:IDxml:base

RDF/XML은 XML 어트리뷰트의 IRI를 두 가지 방식으로 추가 축약할 수 있게 합니다. XML Infoset은 상대 IRI 참조를 해석하기 위한 기본 IRI를 설정하는 base URI 어트리뷰트 xml:base를 제공합니다. 그렇지 않으면 기본 IRI는 문서의 IRI입니다. 기본 IRI는 rdf:about, rdf:resource, rdf:IDrdf:datatype처럼 IRI를 다루는 모든 RDF/XML 어트리뷰트에 적용됩니다.

노드 요소rdf:ID 어트리뷰트는 (속성 요소에는 사용하지 않음; 거기서는 다른 의미를 가짐) rdf:about 대신 사용할 수 있으며, #rdf:ID 어트리뷰트 값을 연결한 것과 동등한 상대 IRI 참조를 제공합니다. 예를 들어 rdf:ID="name"이면 rdf:about="#name"과 동등합니다. rdf:ID는 동일한 이름xml:base 값(또는 없는 경우 문서)의 범위 안에서 한 번만 나타날 수 있기 때문에 추가적인 검사를 제공하므로, 같은 IRI에 상대적인 구별된 관련 용어 집합을 정의하는 데 유용합니다.

두 형식 모두 범위 내 xml:base 또는 RDF/XML 문서의 URL에서 기본 IRI가 결정되어야 합니다.

예제 17http://example.org/here/xml:baserdf:Description 노드 요소의 rdf:ID를 사용하여 http://example.org/here/#snack의 노드 IRI를 축약하는 것을 보여줍니다. ex:prop 술어의 목적어 노드는 범위 내 기본 IRI를 사용하여 rdf:resource XML 어트리뷰트 값에서 해석되어 IRI http://example.org/here/fruit/apple가 되는 IRI입니다.

2.16 컨테이너 멤버십 속성 요소: rdf:lirdf:_n

RDF에는 컨테이너 멤버십 속성의 집합과, 이에 대응하는 속성 요소가 있으며, 이들은 주로 형식 지정 노드 요소로 작성될 수 있는 rdf:Seq, rdf:Bag, rdf:Alt 클래스의 인스턴스와 함께 사용됩니다. 목록 속성은 rdf:_1, rdf:_2 등이며, 예제 18에 표시된 것처럼 속성 요소 또는 속성 어트리뷰트로 작성할 수 있습니다. 순서대로 rdf:_1, rdf:_2와 동등한 특수 속성 요소 rdf:li가 있으며, 이는 6.4 목록 확장 규칙에 자세히 설명되어 있습니다. 컨테이너 멤버십 속성으로의 매핑은 특수 rdf:li 속성 요소가 XML에 나타나는 순서대로 항상 수행되며, 문서 순서는 중요합니다. 예제 18와 동등한 RDF/XML을 이 형식으로 작성한 것은 예제 19에 표시되어 있습니다.

2.17 컬렉션: rdf:parseType="Collection"

RDF/XML은 속성 요소가 여러 노드 요소를 포함할 수 있도록 rdf:parseType="Collection" 어트리뷰트를 허용합니다. 이렇게 포함된 노드 요소는 컬렉션의 주어 노드 집합을 제공합니다. 이 구문 형식은 주어 노드 컬렉션을 연결하는 트리플 집합에 대응하며, 생성되는 정확한 트리플은 6.2.20 생성식 parseTypeCollectionPropertyElt에 자세히 설명되어 있습니다. 컬렉션 구성은 노드 요소가 XML 문서에 나타나는 순서대로 항상 수행됩니다. 노드 컬렉션의 순서가 중요한지 여부는 애플리케이션 문제이며 여기서는 정의하지 않습니다.

예제 20은 이 형식을 사용하여 ex:hasFruit 속성 요소 끝에 있는 세 노드 요소의 컬렉션을 보여줍니다.

2.18 문장 구체화: rdf:ID

rdf:ID 어트리뷰트는 속성 요소가 생성하는 트리플을 구체화하는 데 속성 요소에서 사용할 수 있습니다(전체 세부 사항은 6.3 구체화 규칙 참조). 트리플의 식별자는 #rdf:ID 어트리뷰트 값을 연결한 상대 IRI 참조를 범위 내 기본 IRI에 대해 해석하여 만든 IRI로 구성되어야 합니다. 예를 들어 rdf:ID="triple"인 경우, 이는 기본 IRI에 대해 상대 IRI 참조 #triple에서 형성된 IRI와 동등합니다. 각 (rdf:ID 어트리뷰트 값, 기본 IRI) 쌍은 RDF/XML 문서 안에서 고유해야 합니다. constraint-id를 참조하십시오.

예제 21ex:prop 속성 요소에서 만들어진 트리플을 구체화하기 위해 rdf:ID가 사용되어, 구체화된 트리플에 IRI http://example.org/triples/#triple1를 부여하는 것을 보여줍니다.

2.19 트리플 용어: rdf:parseType="Triple"

트리플 용어RDF 트리플목적어가 될 수 있습니다. RDF 그래프트리플 용어트리플 용어를 단일 RDF 트리플을 인코딩하는 리소스로 작성할 수 있게 하는 형식으로 작성될 수 있습니다. 이는 하나의 트리플 용어를 설명하기 위해 속성 요소rdf:parseType="Triple" 어트리뷰트를 추가하여 수행되며, 해당 트리플 용어는 그래프 자체 안의 트리플로 나타나지 않을 수 있습니다. 6.2.19 생성식 parseTypeTriplePropertyElt를 참조하십시오.

참고

트리플 용어문장 구체화와 유사한 역할을 하지만, 차이점은 트리플 용어가 RDF 1.2 추상 구문 [RDF12-CONCEPTS]의 핵심 부분인 반면, 문장 구체화는 단언된 그래프 안의 다른 트리플을 설명하기 위해 트리플을 내보낸다는 점입니다. 트리플 용어는 반드시 단언되지 않은 트리플을 설명합니다. 트리플을 동시에 단언하고 설명하는 방법은 2.20 트리플 주석 달기: rdf:annotation 또는 rdf:annotationNodeID를 참조하십시오.

2.20 트리플 주석 달기: rdf:annotation 또는 rdf:annotationNodeID

RDF 1.2 XML 구문에는 명시적 식별자를 통해 트리플을 단언하고, 그 트리플 용어와 연결된 reifier가 추가 트리플의 주어 또는 목적어가 되도록 함으로써 트리플에 주석을 다는 구문도 포함됩니다. 명시적으로 식별된 경우, 동일한 reifier는 추가 트리플 및/또는 트리플 용어주어 또는 목적어로 사용할 수 있습니다.

reifier속성 어트리뷰트로 추가할 수 있으며, rdf:annotation (IRI reifier용) 또는 rdf:annotationNodeID (빈 노드 reifier용)를 사용합니다. 이 reifier는 또한 다른 트리플의 주어로 사용될 수 있으며, 이는 그 트리플들을 속성 요소와 연결된 주어, 술어, 목적어로 구성된 트리플 용어와 연결하는 방법입니다.

3. 적합성

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

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

추가 한정 없이 string을 사용하는 모든 경우는 Unicode [UNICODE] 문자 문자열, 즉 Unicode의 코드 포인트로 표현되는 문자들의 시퀀스를 가리킵니다.

정의:
RDF/XML 문서는 이 문서에서 정의한 RDF용 XML 구문으로 작성된 RDF 문서입니다.
적합성:
RDF/XML 문서는 이 문서에 정의된 명세를 준수하는 경우 적합한 RDF/XML 문서입니다.

3.1 RDF/XML 인터넷 미디어 유형 및 파일 확장자

연락처:
Dan Brickley
참조:
W3C 명세를 위한 미디어 유형 등록 방법
인터넷 미디어 유형 등록, 사용의 일관성
TAG Finding 2002년 6월 3일(2002년 9월 4일 개정)

RDF/XML의 인터넷 미디어 유형(이전에는 MIME Type으로 알려짐)은 application/rdf+xml — [RFC3870]입니다.

RDF/XML 파일은 모든 플랫폼에서 확장자 ".rdf" (모두 소문자)를 가지는 것이 권장됩니다.

RDF 1.2에서 도입된 기능은 "1.1"이 아닌 정의된 값을 가진 rdf:version 어트리뷰트를 포함하는 범위 내 노드 요소에서 버전 선언을 필요로 합니다. rdf:version에 허용되는 값은 [RDF12-CONCEPTS]의 2.1 Version Labels에 정의되어 있습니다. 그 밖의 버전 값에 대한 파서 동작은 정의되어 있지 않으며, 오류나 경고를 신호하는 데 MAY 사용될 수 있습니다.

application/rdf+xml 미디어 유형은 IANA에 [RFC3870]로 등록되어 있습니다.

3.2 개인정보 보호 고려 사항

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

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

3.3 보안 고려 사항

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

[RFC3870]의 Security Considerations Section을 참조하십시오.

4. 전역 문제

4.1 RDF 네임스페이스와 어휘

RDF 네임스페이스 IRI (또는 네임스페이스 이름)는 http://www.w3.org/1999/02/22-rdf-syntax-ns#이며, 일반적으로 XML에서 접두사 rdf와 함께 사용되지만 다른 접두사 문자열도 사용할 수 있습니다. RDF 어휘는 이 네임스페이스 이름으로 식별되며 다음 이름들로만 구성됩니다:

구문 이름 — 개념이 아님

RDF Description ID about annotation annotationNodeID datatype li nodeID parseType resource version

클래스 이름

Seq Bag Alt Statement Property XMLLiteral List

속성 이름

subject predicate object type value first rest _n
여기서 n은 선행 0이 없는 0보다 큰 십진 정수입니다.

리소스 이름

nil

다른 모든 이름은 정의되어 있지 않으며, 발견될 때 경고를 생성하는 것이 SHOULD 되지만 그 밖에는 정상적으로 동작해야 합니다.

RDF/XML 문서 안에서는 네임스페이스 이름RDF 네임스페이스 IRI에 추가 문자를 연결한 것인 XML 네임스페이스를 사용하는 것은 허용되지 않습니다.

이 문서 전반에서 rdf:name이라는 용어는 nameRDF 어휘에서 온 것이며, RDF 네임스페이스 IRIname을 연결한 IRI를 가진다는 것을 나타내는 데 사용됩니다. 예를 들어, rdf:typeIRI http://www.w3.org/1999/02/22-rdf-syntax-ns#type를 가집니다

4.2 식별자

RDF Concepts 문서 [RDF12-CONCEPTS]는 노드 및/또는 술어로 작용할 수 있는 RDF 데이터의 네 가지 유형을 정의합니다:

IRI

IRI는 노드(주어와 목적어 모두) 및 술어로 작용할 수 있습니다.

IRI는 다음 중 하나일 수 있습니다:

  • 4.3 IRI 해석에 설명된 대로 범위 내 기본 IRI에 대해 해석되어 해석된 IRI를 제공하는 상대 IRI 참조로 해석되는 XML 어트리뷰트 값으로 제공된 것
  • XML 네임스페이스로 한정된 요소 및 어트리뷰트 이름 (QName)에서 변환된 것
  • rdf:ID 어트리뷰트 값에서 변환된 것.

RDF/XML 안에서 XML QName은 XML 로컬 이름을 네임스페이스 이름(IRI)에 붙여 IRI로 변환됩니다. 예를 들어 XML 네임스페이스 접두사 foo가 네임스페이스 이름(IRI) http://example.org/somewhere/를 가진다면 QName foo:barIRI http://example.org/somewhere/bar에 해당합니다. 이것은 만들 수 있는 IRI를 제한하며, 동일한 IRI가 여러 방식으로 주어질 수 있음에 유의하십시오.

rdf:ID 값은 4.3 IRI 해석에 정의된 범위 내 기본 IRI에 "#"을 붙인 결과에 어트리뷰트 값을 붙여 IRI로 변환됩니다.

리터럴

리터럴은 목적어 노드로만 작용할 수 있습니다.

리터럴은 항상 데이터형을 가집니다. 언어 태그 문자열은 데이터형 rdf:langString을 얻습니다. 언어 태그나 데이터형이 지정되지 않은 경우, 리터럴은 데이터형 xsd:string이 지정된 것처럼 처리됩니다.

빈 노드

빈 노드는 주어 노드와 목적어 노드로 작용할 수 있습니다.

빈 노드RDF 그래프 안에서 구별되는 정체성을 가집니다. 그래프가 RDF/XML과 같은 구문으로 작성될 때, 이러한 빈 노드는 이 구별을 보존하기 위해 문서 로컬 식별자와 구문이 필요할 수 있습니다. 이러한 로컬 식별자는 빈 노드 식별자라고 하며, RDF/XML에서는 Production nodeIdAttr에 주어진 구문을 가진 rdf:nodeID 어트리뷰트의 값으로 사용됩니다. RDF/XML의 빈 노드 식별자는 XML Information Set [XML-INFOSET] 문서 정보 항목으로 범위가 한정됩니다.

rdf:nodeID 어트리뷰트 값으로 빈 노드 식별자가 명시적으로 주어지지 않으면 하나가 생성되어야 합니다 (generated-blank-node-id 사용, 5.3.3 문법 동작 표기법 참조). 이러한 생성된 빈 노드 식별자rdf:nodeID 어트리뷰트 값에서 파생된 어떤 빈 노드 식별자와도 충돌해서는 MUST 안 됩니다. 이는 그래프 안의 모든 빈 노드의 구별되는 정체성을 보존하는 어떤 방법으로도 구현할 수 있습니다. 즉, 동일한 빈 노드 식별자가 서로 다른 빈 노드에 주어지지 않아야 합니다. 한 가지 가능한 방법은 모든 rdf:nodeID 어트리뷰트 값에 상수 접두사를 추가하고, 생성된 빈 노드 식별자가 그 접두사를 사용하지 않도록 보장하는 것입니다. 또 다른 방법은 모든 rdf:nodeID 어트리뷰트 값을 새로 생성된 빈 노드 식별자에 매핑하고, RDF/XML 문서 안의 그러한 모든 값에 대해 그 매핑을 수행하는 것입니다.

트리플 용어

트리플 용어는 목적어 노드로만 작용할 수 있습니다.

트리플 용어는 그래프 안에서 단언될 수도 있고 단언되지 않을 수도 있는 트리플을 설명합니다.

4.3 IRI 해석

RDF/XML은 각 ·root event··element event·에 대한 ·base-iri· 접근자를 정의하는 XML Base [XMLBASE]를 지원합니다. 상대 IRI 참조는 [XMLBASE]에 지정된 알고리즘과 Uniform Resource Identifier (URI): Generic Syntax [RFC3986]에 따라 섹션 5.2의 기본 알고리즘만 사용하여 IRI로 해석됩니다. 이러한 명세들은 #foo와 같은 단독 fragment identifier나 빈 문자열 ""IRI로 해석하는 알고리즘을 지정하지 않습니다. RDF/XML에서 fragment identifier는 범위 내 기본 IRI에 fragment identifier를 붙여 IRI로 변환됩니다. 빈 문자열은 범위 내 기본 IRI로 대체되어 IRI로 변환됩니다.

빈 same document reference "" 는 기본 IRI의 URI 부분에 대해 해석되며, fragment 부분은 무시됩니다. Uniform Resource Identifiers (URI) [RFC3986]를 참조하십시오.

참고

구현 참고(정보성): 경로 구성 요소(/)가 없는 계층적 기본 URI를 사용할 때에는, 해석을 위한 기본 IRI로 사용하기 전에 이를 추가해야 합니다.

4.4 제약 조건

constraint-id

생성식 idAttr의 각 적용은 하나의 어트리뷰트와 일치합니다. 일치한 어트리뷰트의 ·rdf-term· 접근자는 단일 RDF/XML 문서 안에서 고유합니다.

이름의 구문은 rdf-id production과 일치해야 MUST 합니다.

5. 구문 데이터 모델

이 문서는 RDF/XML의 구문을 기호 알파벳 위의 문법으로 지정합니다. 이러한 기호는 XPATH   Information Set Mapping 방식에서 이벤트라고 불립니다. 이벤트의 시퀀스는 보통 XML 문서에서 파생되며, 이 경우 아래 5.2 정보 집합 매핑에 정의된 문서 순서에 따릅니다. 이러한 이벤트가 형성하는 시퀀스는 같은 XML 문서에서 [SAX] XML API가 생성하는 이벤트 시퀀스와 유사하도록 의도되었습니다. 이벤트 시퀀스는 문법에 대해 검사되어 구문적으로 잘 형성된 RDF/XML인지 여부를 판단할 수 있습니다.

RDF 1.2 Concepts and Abstract Syntax 명세 [RDF12-CONCEPTS]는 네 가지 유형의 RDF 용어를 정의합니다: IRI, 리터럴, 빈 노드, 및 트리플 용어. 리터럴은 어휘 형식과 선택적 언어 태그 [BCP47] – 아마도 기본 방향을 포함 – 또는 데이터형 IRI로 구성됩니다. 추가 유형인 prefix는 문자열 식별자를 네임스페이스 IRI에 매핑하기 위해 파싱 중에 사용됩니다.

문법 생성식에는 생성식이 인식될 때 발생하는 동작이 포함될 수 있습니다. 이러한 동작들을 함께 보면, 구문적으로 잘 형성된 어떤 RDF/XML 이벤트 시퀀스도 일치하는 생성식을 RDF 용어 또는 그 구성 요소(예: 언어 태그, 리터럴의 어휘 형식)에 매핑하여 트리플 집합으로 변환하는 변환을 정의합니다. 문법 생성식은 파서 상태를 변경하고 트리플을 내보냅니다.

여기에 제시된 모델은 RDF/XML 문서에서 RDF 그래프의 표현을 만드는 한 가지 방법을 보여줍니다. 이는 어떤 구현 방법도 의무화하지 않습니다 — 같은 RDF 그래프의 표현이 되는 다른 어떤 방법도 사용할 수 있습니다.

특히:

이 구문은 잘 형성되지 않은 XML 문서나 XML Information Set [XML-INFOSET]을 갖지 않는 문서를 지원하지 않습니다; 예를 들어, Namespaces in XML [XML-NAMES]에 부합하지 않는 문서가 이에 해당합니다.

Infoset은 XML Base [XMLBASE] 지원을 요구합니다. RDF/XML은 4.3 IRI 해석에서 논의된 정보 항목 속성 [base IRI]를 사용합니다.

이 명세는 RDF/XML에 대해 적어도 다음 정보 항목과 속성을 지원하는 XML Information Set [XML-INFOSET]을 요구합니다:

문서 정보 항목
[document element], [children], [base IRI]
요소 정보 항목
[local name], [namespace name], [children], [attributes], [parent], [base IRI]
어트리뷰트 정보 항목
[local name], [namespace name], [normalized value]
문자 정보 항목
[character code]

다음 항목들은 데이터 모델 이벤트로 매핑되지 않습니다:

다른 정보 항목과 속성은 구문 데이터 모델 이벤트로 매핑되지 않습니다.

예약된 XML 이름을 가진 요소 정보 항목 (Extensible Markup Language (XML) 1.1 (Second Edition)Name 참조)은 데이터 모델 요소 이벤트로 매핑되지 않습니다. 이는 [prefix]가 xml로 시작하는 모든 항목 (대소문자를 구분하지 않는 비교)과, [prefix] 속성에 값이 없고 [local name]이 xml로 시작하는 모든 항목 (대소문자를 구분하지 않는 비교)입니다.

parseTypeLiteralPropertyElt 생성식과 일치하는 XML 요소 안에 포함된 모든 정보 항목은 XML 리터럴을 형성하며 이 매핑을 따르지 않습니다. 자세한 정보는 parseTypeLiteralPropertyElt를 참조하십시오.

이 섹션은 [XML-INFOSET] 명세의 Conformance 요구 사항을 충족하기 위한 것입니다. 이 명세를 구현하는 데 필요한 정보 항목과 속성을 지정합니다.

5.1 이벤트

다음 하위 섹션에는 아홉 가지 유형의 이벤트가 정의되어 있습니다. 대부분의 이벤트는 Infoset 정보 항목에서 구성됩니다 (IRI, 빈 노드, 명시적 데이터형이 없는 리터럴형식 지정 리터럴 제외). 이벤트 생성자의 효과는 다른 모든 이벤트와 구별되는 고유한 정체성을 가진 새 이벤트를 생성하는 것입니다. 이벤트에는 접근자 연산이 있으며, 대부분은 정적 값이거나 계산될 수 있는 string-value, IRI, rdf-term, literal, 또는 bnode 접근자를 가집니다.

5.1.1 루트 이벤트

문서 정보 항목에서 구성되며 다음 접근자와 값을 가집니다.

document-element
문서 정보 항목 속성 [document-element]의 값으로 설정됩니다.
children
문서 정보 항목 속성 [children]의 값으로 설정됩니다.
base-iri
문서 정보 항목 속성 [base IRI]의 값으로 설정됩니다.
language
빈 문자열로 설정됩니다.
direction
빈 문자열로 설정됩니다.
graph
내보낸 트리플을 수집하는 데 사용되는 그래프로, 새 RDF 그래프로 초기화됩니다.

5.1.2 요소 이벤트

요소 정보 항목에서 구성되며 다음 접근자와 값을 가집니다:

local-name
요소 정보 항목 속성 [local name]의 값으로 설정됩니다.
namespace-name
요소 정보 항목 속성 [namespace name]의 값으로 설정됩니다.
children
요소 정보 항목 속성 [children]의 값으로 설정됩니다.
parent
요소 정보 항목 속성 [parent]의 값으로 설정됩니다.
base-iri
요소 정보 항목 속성 [base IRI]의 값으로 설정됩니다.
attributes

어트리뷰트 정보 항목의 집합인 요소 정보 항목 속성 [attributes]의 값으로 만들어집니다.

이 집합에 어트리뷰트 정보 항목 xml:lang ([namespace name] 속성의 값이 "http://www.w3.org/XML/1998/namespace"이고 [local name] 속성 값이 "lang")이 포함되어 있으면, 그것은 어트리뷰트 정보 항목 집합에서 제거되고 ·language· 접근자는 해당 어트리뷰트 정보 항목의 [normalized-value] 속성으로 설정됩니다.

요소가 "1.2-basic", "1.2" 또는 그보다 큰 값을 가진 version 접근자를 가지고 있고, 이 집합에 어트리뷰트 정보 항목 its:dir ([namespace name] 속성의 값이 "http://www.w3.org/2005/11/its"이고 [local name] 속성 값이 "dir")이 포함되어 있으면, 그것은 어트리뷰트 정보 항목 집합에서 제거되고 ·direction· 접근자는 해당 어트리뷰트 정보 항목의 [normalized-value] 속성으로 설정되며, 이는 "ltr", "rtl", 또는 빈 문자열 중 하나여야 MUST 합니다.

요소가 "1.2-basic", "1.2" 또는 그보다 큰 값을 가진 version 접근자를 가지고 있고, 이 집합에 어트리뷰트 정보 항목 its:version ([namespace name] 속성의 값이 "http://www.w3.org/2005/11/its"이고 [local name] 속성 값이 "version")이 포함되어 있으면, 그것은 어트리뷰트 정보 항목 집합에서 제거되고 ·its-version· 접근자는 해당 어트리뷰트 정보 항목의 [normalized-value] 속성으로 설정됩니다.

남아 있는 모든 예약된 XML 이름 (Extensible Markup Language (XML) 1.1 (Second Edition)Name 참조)은 이제 집합에서 제거됩니다. 이는 [prefix] 속성이 xml로 시작하는 집합 안의 모든 어트리뷰트 정보 항목 (대소문자를 구분하지 않는 비교)과, [prefix] 속성에 값이 없고 [local name]이 xml로 시작하는 모든 어트리뷰트 정보 항목 (대소문자를 구분하지 않는 비교)이 제거된다는 뜻입니다. [base IRI] 접근자는 어떤 xml:base 어트리뷰트 정보 항목이 삭제되기 전에 XML Base에 의해 계산된다는 점에 유의하십시오.

그런 다음 남아 있는 어트리뷰트 정보 항목 집합은 새 어트리뷰트 이벤트 집합을 구성하는 데 사용되며, 이 접근자의 값으로 할당됩니다.

IRI
namespace-name 접근자의 값과 local-name 접근자의 값을 연결하여 구성된 IRI로 설정됩니다.
li-counter
정수 값 1로 설정됩니다.
language
위에서 설명한 대로 ·attributes·에서 설정됩니다. 어트리뷰트에서 값이 주어지지 않으면, 값은 부모 이벤트 (루트 이벤트 또는 요소 이벤트)의 language 접근자 값으로 설정되며, 이는 빈 문자열일 수 있습니다.
direction
위에서 설명한 대로 ·attributes·에서 설정됩니다. 어트리뷰트에서 값이 주어지지 않으면, 값은 부모 이벤트 (루트 이벤트 또는 요소 이벤트)의 direction 접근자 값으로 설정되며, 이는 빈 문자열일 수 있습니다.
version
위에서 설명한 대로 ·attributes·에서 설정됩니다. 어트리뷰트에서 값이 주어지지 않으면, 값은 부모 이벤트 (루트 이벤트 또는 요소 이벤트)의 version 접근자 값으로 설정됩니다.
its-version
위에서 설명한 대로 ·attributes·에서 설정됩니다. 어트리뷰트에서 값이 주어지지 않으면, 값은 부모 이벤트 (루트 이벤트 또는 요소 이벤트)의 version 접근자 값으로 설정되며, 이는 "2.0"으로 설정되는 것이 SHOULD 됩니다.
subject
초기 값이 없습니다. 값은 Identifier 이벤트이거나 트리플 용어일 수 있습니다. 이 접근자는 RDF 그래프에서 하나의 노드를 다루는 요소에 사용되며, 이는 일반적으로 RDF 트리플주어입니다.
graph
내보낸 트리플을 수집하는 데 사용되는 그래프입니다. 초기 값은 부모 이벤트 (루트 이벤트 또는 요소 이벤트)에서 가져오거나, 설정되어 있지 않으면 새 RDF 그래프에서 가져옵니다. parseType="Triple" 어트리뷰트에 의해 수정될 수 있습니다.

5.1.3 끝 요소 이벤트

접근자가 없습니다. 시퀀스에서 포함하는 요소의 끝을 표시합니다.

5.1.4 어트리뷰트 이벤트

어트리뷰트 정보 항목에서 구성되며 다음 접근자와 값을 가집니다:

local-name
어트리뷰트 정보 항목 속성 [local name]의 값으로 설정됩니다.
namespace-name
어트리뷰트 정보 항목 속성 [namespace name]의 값으로 설정됩니다.
string-value
[XML11]에 지정된 어트리뷰트 정보 항목 속성 [normalized value]의 값으로 설정됩니다 (정규화된 값이 길이 0인 문자열인 어트리뷰트의 경우, string-value도 길이 0인 문자열입니다).
IRI

·namespace-name·이 존재하면, ·namespace-name· 접근자의 값과 ·local-name· 접근자의 값을 연결하여 구성된 IRI로 설정됩니다. 그렇지 않고 ·local-name·ID, about, parseType, resource, type, 또는 version이면, RDF 네임스페이스 IRIlocal-name 접근자의 값을 연결한 값으로 구성된 IRI로 설정됩니다. 그 밖의 네임스페이스가 없는 ·local-name· 접근자 값은 금지됩니다.

제한된 네임스페이스 없는 이름 집합에 대한 지원은 REQUIRED이며, [RDF-SYNTAX-GRAMMAR-19990222]에 지정된 RDF/XML 문서가 계속 유효하도록 하기 위한 것입니다; 새 문서는 이러한 한정되지 않은 어트리뷰트를 사용해서는 SHOULD NOT 되며, 애플리케이션은 문서에서 한정되지 않은 형식이 보일 때 경고하도록 선택할 MAY 수 있습니다.

XML 어트리뷰트에서 IRI를 구성하면 서로 다른 XML 어트리뷰트에서 동일한 IRI가 생성될 수 있습니다. 이는 어트리뷰트 이벤트를 일치시킬 때(예: rdf:aboutabout XML 어트리뷰트가 둘 다 존재할 때) 문법에서 모호성을 일으킬 수 있습니다. 이러한 문서는 불법입니다.

rdf-term
값은 포함하는 요소의 ·base-iri· 접근자에 대해 해석된 string-value에서 구성된 IRI입니다.

5.1.5 텍스트 이벤트

하나 이상의 연속된 문자 정보 항목의 시퀀스에서 구성됩니다. 단일 접근자를 가집니다:

string-value
각 문자 정보 항목의 [character code] 속성을 연결하여 만든 문자열의 값으로 설정됩니다.

5.1.6 IRI 이벤트

다음 접근자를 가진 IRI에 대한 이벤트입니다:

identifier
IRI로 사용되는 문자열 값을 가집니다.
rdf-term
값은 ·identifier· 접근자의 값에서 구성된 IRI입니다.

이러한 이벤트는 ·identifier· 접근자에 값을 부여하여 구성됩니다.

RDF의 식별자에 대한 자세한 정보는 4.2 식별자를 참조하십시오.

5.1.7 트리플 용어 이벤트

다음 접근자를 가진 트리플 용어에 대한 이벤트입니다:

rdf-term
값은 트리플 용어입니다.

이러한 이벤트는 rdf-term 접근자에 값을 부여하여 구성됩니다.

5.1.8 빈 노드 식별자 이벤트

다음 접근자를 가진 빈 노드 식별자에 대한 이벤트입니다:

identifier
문자열 값을 가집니다.
blank-node
값은 ·identifier· 접근자에서 가져온 로컬 식별자를 가진 빈 노드입니다. RDF/XML 문서 안에서, 같은 식별자로 식별되는 모든 빈 노드는 같은 빈 노드를 나타냅니다.

이러한 이벤트는 ·identifier· 접근자에 값을 부여하여 구성됩니다.

RDF의 식별자에 대한 자세한 정보는 4.2 식별자를 참조하십시오.

5.1.9 데이터형 없는 리터럴 이벤트

참고

RDF 1.2에서 명시적 데이터형이 없는 RDF/XML 리터럴은 언어 태그가 없는 경우 데이터형 xsd:string을 가진 리터럴, 언어 태그가 있고 방향이 없는 경우 데이터형 rdf:langString을 가진 리터럴, 또는 언어 태그와 방향이 모두 있는 경우 데이터형 rdf:dirLangString을 가진 리터럴에 대한 구문적 설탕으로 처리됩니다. 이 하위 섹션에 정의된 N-Triples로의 매핑은 이 변경의 영향을 받지 않습니다.

다음 접근자를 가질 수 있는 명시적 데이터형 없는 리터럴에 대한 이벤트입니다:

literal-value
문자열 값을 가집니다.
literal-language
언어 태그 문자열에서 언어 태그로 사용되는 문자열 값을 가집니다.
literal-direction
방향성이 있는 언어 태그 문자열에서 방향 태그로 사용되는 문자열 값을 가집니다.
literal

값은 다음과 같이 다른 접근자에서 구성된 RDF 리터럴입니다.

·literal-language·가 빈 문자열이면 값은 ·literal-value· 접근자의 값에서 가져온 어휘 형식데이터형 IRI xsd:string을 가진 RDF 리터럴입니다.

그렇지 않고 ·literal-direction·이 빈 문자열이면, 값은 ·literal-value· 접근자의 값에서 가져온 어휘 형식·literal-language· 접근자의 값에서 가져온 언어 태그를 가진 언어 태그 문자열입니다.

그렇지 않으면 값은 ·literal-value· 접근자의 값에서 가져온 어휘 형식, ·literal-language· 접근자의 값에서 가져온 언어 태그, 그리고 ·literal-direction· 접근자의 값에서 가져온 기본 방향을 가진 방향성이 있는 언어 태그 문자열입니다.

이러한 이벤트는 ·literal-value·, ·literal-language·, 및 ·literal-direction· 접근자에 값을 부여하여 구성됩니다.

참고

상호운용성 참고(정보성): Unicode 결합 문자로 시작하는 리터럴은 허용되지만, 상호운용성 문제를 일으킬 수 있습니다. 자세한 정보는 [CHARMOD]를 참조하십시오.

5.1.10 형식 지정 리터럴 이벤트

다음 접근자를 가질 수 있는 형식 지정 리터럴에 대한 이벤트입니다:

literal-value
문자열 값을 가집니다.
literal-datatype
IRI로 사용되는 문자열 값을 가집니다.
literal

값은 ·literal-value· 접근자의 값에서 가져온 어휘 형식·literal-datatype· 접근자의 값에서 가져온 데이터형 IRI를 가진 RDF 리터럴입니다.

이러한 이벤트는 ·literal-value··literal-datatype· 접근자에 값을 부여하여 구성됩니다.

참고

상호운용성 참고(정보성): Unicode 결합 문자로 시작하는 리터럴은 허용되지만, 상호운용성 문제를 일으킬 수 있습니다. 자세한 정보는 [CHARMOD]를 참조하십시오.

참고

구현 참고(정보성): XML Schema (part 1) [XMLSCHEMA11-2]에서 공백 정규화 는 whiteSpace facet의 값에 따라 유효성 검사 중에 발생합니다. 이 문서에서 사용되는 구문 매핑은 그 이후에 발생하므로, whiteSpace facet은 형식적으로는 더 이상의 효과가 없습니다.

5.2 정보 집합 매핑

Infoset을 문서 순서의 이벤트 시퀀스로 변환하려면, 각 정보 항목을 위에 설명한 대로 변환하여 접근자와 값을 가진 이벤트 트리를 생성합니다. 그런 다음 각 요소 이벤트는 아래에 설명한 대로 대체되어 이벤트 트리를 문서 순서의 시퀀스로 바꿉니다.

  1. 원래의 요소 이벤트
  2. children 접근자의 값으로, 재귀적으로 변환된, 비어 있을 수 있는 이벤트의 순서 있는 목록.
  3. 끝 요소 이벤트

5.3 문법 표기법

다음 표기법은 5. 구문 데이터 모델에 주어진 데이터 모델 이벤트의 시퀀스 일치와, 일치 항목에 대해 수행할 동작을 설명하는 데 사용됩니다. RDF/XML 문법은 이러한 일치된 데이터 모델 이벤트에서 트리플로의 매핑에 의해 정의되며, 다음 형식의 표기법을 사용합니다:

number event-type event-content

action...

Triple(s)

여기서 event-content는 다음 섹션에 제시된 표기법을 사용하여 event-types (5.1 이벤트에 정의됨)과 일치하는 표현식입니다. number는 참조 목적으로 사용됩니다. 문법 action에는 그래프에 새 트리플을 생성하는 것이 포함될 수 있습니다.

다음 섹션은 사용되는 일반 표기법과, 이벤트 일치 및 동작에 대한 표기법을 설명합니다.

5.3.1 문법 일반 표기법

표기법 의미
event.accessor 이벤트 접근자의 값.
rdf:X 4.1 RDF 네임스페이스와 어휘에 정의된 URI.
"ABC" 문자 A, B, C가 순서대로 있는 문자열.

5.3.2 문법 이벤트 일치 표기법

표기법 의미
A == B 이벤트 접근자 A가 표현식 B와 일치합니다.
A != B A는 B와 같지 않습니다.
A | B | ... A, B, ... 항은 대안입니다.
A - B A의 항 중 B의 모든 항을 제외한 것.
anyURI. 임의의 URI.
anyString. 임의의 문자열.
list(item1, item2, ...); list() 이벤트의 순서 있는 목록. 빈 목록.
set(item1, item2, ...); set() 이벤트의 순서 없는 집합. 빈 집합.
* 앞선 항의 0회 이상 반복.
? 앞선 항의 0회 또는 1회 반복.
+ 앞선 항의 1회 이상 반복.
root(acc1 == value1,
    acc2 == value2, ...)
접근자를 가진 루트 이벤트와 일치합니다.
start-element(acc1 == value1,
    acc2 == value2, ...)
children
end-element()
접근자를 가진 요소 이벤트, 요소 콘텐츠로서 비어 있을 수 있는 이벤트 목록, 그리고 끝 요소 이벤트의 시퀀스와 일치합니다.
attribute(acc1 == value1,
    acc2 == value2, ...)
접근자를 가진 어트리뷰트 이벤트와 일치합니다.
text() 텍스트 이벤트와 일치합니다.

5.3.3 문법 동작 표기법

표기법 의미
A := B A에 값 B를 할당합니다.
concat(A, B, ..) 항들을 순서대로 연결하여 만든 문자열.
resolve(e, s) s상대 IRI 참조로 해석하여 만든 IRI이며, 4.3 IRI 해석에 정의된 대로 e·base-iri· 접근자에 대해 해석됩니다.
generated-blank-node-id() 4.2 식별자에 정의된 새롭고 구별되는 생성된 빈 노드 식별자에 대한 문자열 값.
event.accessor := value 이벤트 접근자를 주어진 값으로 설정합니다.
iri(identifier := value) IRI 이벤트를 만듭니다.
bnodeid(identifier := value) 빈 노드 식별자 이벤트를 만듭니다. 4.2 식별자 섹션도 참조하십시오.
literal(literal-value := string,
    literal-language := language,
    literal-direction := direction, ...)
데이터형 없는 리터럴 이벤트를 만듭니다.
string(iri) IRIstring 값.
typed-literal(literal-value := string, ...) 형식 지정 리터럴 이벤트를 만듭니다.
triple(s, p, o) s, p, 및 o로 구성된 새 트리플 용어 이벤트를 만듭니다.

6. RDF/XML 문법

6.1 문법 요약

6.2.2 생성식 coreSyntaxTerms rdf:RDF | rdf:ID | rdf:about | rdf:annotation | rdf:annotationNodeID | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype | rdf:version
6.2.3 생성식 syntaxTerms coreSyntaxTerms | rdf:Description | rdf:li
6.2.4 생성식 oldTerms rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID
6.2.5 생성식 nodeElementIRIs anyURI - ( coreSyntaxTerms | rdf:li | oldTerms )
6.2.6 생성식 propertyElementURIs anyURI - ( coreSyntaxTerms | rdf:Description | oldTerms )
6.2.7 생성식 propertyAttributeIRIs anyURI - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )
6.2.8 생성식 doc root(document-element == RDF, children == list(RDF))
6.2.9 생성식 RDF start-element(IRI == rdf:RDF, attributes == set())
nodeElementList
end-element()
6.2.10 생성식 nodeElementList ws* (nodeElement ws* )*
6.2.11 생성식 nodeElement start-element(IRI == nodeElementIRIs
    attributes == set(idAttr | nodeIdAttr | aboutAttr )?, propertyAttr*)
propertyEltList
end-element()
6.2.12 생성식 ws XML [XML11]의 정의 White Space 규칙 [3] S에 정의된 공백과 일치하는 텍스트 이벤트 섹션 Common Syntactic Constructs
6.2.13 생성식 propertyEltList ws* (propertyElt ws* ) *
6.2.14 생성식 propertyElt resourcePropertyElt | literalPropertyElt | parseTypeLiteralPropertyElt | parseTypeResourcePropertyElt | parseTypeTriplePropertyElt | parseTypeCollectionPropertyElt | parseTypeOtherPropertyElt | emptyPropertyElt
6.2.15 생성식 resourcePropertyElt start-element(IRI == propertyElementURIs ), attributes == set(idAttr?))
ws* nodeElement ws*
end-element()
6.2.16 생성식 literalPropertyElt start-element(IRI == propertyElementURIs ), attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, datatypeAttr?))
text()
end-element()
6.2.17 생성식 parseTypeLiteralPropertyElt start-element(IRI == propertyElementURIs ), attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, parseLiteral))
literal
end-element()
6.2.18 생성식 parseTypeResourcePropertyElt start-element(IRI == propertyElementURIs ), attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, parseResource))
propertyEltList
end-element()
6.2.19 생성식 parseTypeTriplePropertyElt start-element(IRI == propertyElementURIs ), attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, parseTriple))
propertyEltList
end-element()
6.2.20 생성식 parseTypeCollectionPropertyElt start-element(IRI == propertyElementURIs ), attributes == set(idAttr?, parseCollection))
nodeElementList
end-element()
6.2.21 생성식 parseTypeOtherPropertyElt start-element(IRI == propertyElementURIs ), attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, parseOther))
propertyEltList
end-element()
6.2.22 생성식 emptyPropertyElt start-element(IRI == propertyElementURIs ), attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, ( resourceAttr | nodeIdAttr | datatypeAttr )?, propertyAttr*))
end-element()
6.2.23 생성식 idAttr attribute(IRI == rdf:ID, string-value == rdf-id)
6.2.24 생성식 nodeIdAttr attribute(IRI == rdf:nodeID, string-value == rdf-id)
6.2.25 생성식 aboutAttr attribute(IRI == rdf:about, string-value == string(IRI))
6.2.28 생성식 propertyAttr attribute(IRI == propertyAttributeIRIs, string-value == anyString)
6.2.29 생성식 resourceAttr attribute(IRI == rdf:resource, string-value == string(IRI))
6.2.30 생성식 datatypeAttr attribute(IRI == rdf:datatype, string-value == string(IRI))
6.2.31 생성식 parseLiteral attribute(IRI == rdf:parseType, string-value == "Literal")
6.2.32 생성식 parseResource attribute(IRI == rdf:parseType, string-value == "Resource")
6.2.33 생성식 parseTriple attribute(IRI == rdf:parseType, string-value == "Triple")
6.2.34 생성식 parseCollection attribute(IRI == rdf:parseType, string-value == "Collection")
6.2.35 생성식 parseOther attribute(IRI == rdf:parseType, string-value == anyString - ("Resource" | "Literal" | "Collection") )
6.2.36 생성식 IRI IRI.
6.2.37 생성식 literal [XML11]의 정의 Content of Elements 규칙 [43] content에 따라 허용되는 모든 XML 요소 콘텐츠. 섹션 3.1 Start-Tags, End-Tags, and Empty-Element Tags에 있음
6.2.38 생성식 rdf-id 임의의 적법한 [XML-NAMES] 토큰 NCName과 일치하는 어트리뷰트 ·string-value·

6.2 문법 생성식

6.2.1 문법 시작

RDF/XML이 독립형 XML 문서인 경우 (application/rdf+xml RDF 미디어 유형 객체로 표시되어 식별되거나, 또는 다른 수단으로 식별되는 경우) 문법은 생성식 doc 또는 생성식 nodeElement로 시작할 수 있습니다.

컨텍스트에 의해 콘텐츠가 RDF/XML임을 아는 경우, 예를 들어 RDF/XML이 다른 XML 콘텐츠 안에 임베드된 경우, 문법은 요소 이벤트  RDF에서 시작하거나 (그 지점에서 요소가 XML에서 적법한 경우에만) 생성식 nodeElementList에서 시작할 수 있습니다 (이는 요소 목록이므로 요소 콘텐츠가 적법한 경우에만). 이러한 임베드된 RDF/XML의 경우, ·base-iri· 값은 사용할 수 있는 루트 이벤트 가 없으므로 포함하는 XML에서 초기화되어야 MUST 합니다. 이러한 임베딩이 발생하면 문법은 여러 번 진입될 수 있지만, 상태가 보존될 것으로 기대되지는 않습니다.

편집자 참고

임베드된 RDF/XML에 대한 테스트를 추가하십시오.

시작 노드는 최상위 XML 문서 요소라고 합니다.

6.2.2 생성식 coreSyntaxTerms

rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype | rdf:version

RDF/XML에서 사용되는 4.1 RDF 네임스페이스와 어휘RDF 어휘에 있는 구문 용어의 부분집합입니다.

6.2.3 생성식 syntaxTerms

coreSyntaxTerms | rdf:Description | rdf:li

RDF/XML에서 사용되는 4.1 RDF 네임스페이스와 어휘RDF 어휘에 있는 모든 구문 용어입니다.

6.2.4 생성식 oldTerms

rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID

이것들은 언어에서 철회된 RDF 어휘의 이름입니다. 자세한 정보는 이슈 rdfms-aboutEach-on-object, 이슈 rdfms-abouteachprefix 및 Last Call 이슈 timbl-01의 결의를 참조하십시오.

6.2.5 생성식 nodeElementIRIs

anyURI - ( coreSyntaxTerms | rdf:li | oldTerms )

노드 요소에서 허용되는 IRI입니다.

6.2.6 생성식 propertyElementURIs

anyURI - ( coreSyntaxTerms | rdf:Description | oldTerms )

속성 요소에서 허용되는 URI입니다.

6.2.7 생성식 propertyAttributeIRIs

anyURI - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )

속성 어트리뷰트에서 허용되는 IRI입니다.

6.2.8 생성식 doc

root(document-element == RDF,
    children == list(RDF))

6.2.9 생성식 RDF

start-element(IRI == rdf:RDF,
    attributes == set())
nodeElementList
end-element()

6.2.10 생성식 nodeElementList

ws* (nodeElement ws* )*

6.2.11 생성식 nodeElement

start-element(IRI == nodeElementIRIs
    attributes == set(idAttr | nodeIdAttr | aboutAttr )?, propertyAttr*)
propertyEltList
end-element()

노드 요소 e의 경우, 일부 어트리뷰트 처리는 자식 이벤트나 다른 어트리뷰트를 다루는 것과 같은 다른 작업보다 먼저 수행되어야 합니다. 이들은 임의의 순서로 처리할 수 있습니다:

e.subject가 비어 있으면, e.subject := bnodeid(identifier := generated-blank-node-id()).

그런 다음 다음 작업은 임의의 순서로 수행될 수 있습니다:

6.2.12 생성식 ws

[XML11]의 정의 White Space 규칙 [3] S에 정의된 공백과 일치하는 텍스트 이벤트 섹션 Common Syntactic Constructs

6.2.13 생성식 propertyEltList

ws* (propertyElt ws* ) *

6.2.14 생성식 propertyElt

요소 ee.IRI = rdf:li를 가지면, 6.4 목록 확장 규칙의 요소 e.parent에 목록 확장 규칙을 적용하여 새 IRI u를 만들고 e.IRI := u로 설정합니다.

이 생성식의 동작은 모든 하위 일치(resourcePropertyElt ... emptyPropertyElt)의 동작보다 먼저 수행되어야 MUST 합니다. 또는 결과가 이 동작이 먼저 수행된 것과 동등해야 MUST 하며, 예를 들어 모든 하위 일치의 첫 번째 동작으로 수행하는 것과 같습니다.

6.2.15 생성식 resourcePropertyElt

start-element(IRI == propertyElementURIs ),
    attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?)
ws* nodeElement ws*
end-element()

요소 e와 그 안에 포함된 단일 nodeElement n에 대해, 먼저 n은 생성식 nodeElement를 사용하여 처리되어야 MUST 합니다. 그런 다음 다음 문장이 e.parent.graph에 추가됩니다:

rdf:ID 어트리뷰트 a가 주어진 경우, 위의 문장은 i := iri(identifier := resolve(e, concat("#", a.string-value)))로 6.3 구체화 규칙을 사용하여 구체화되며, e.subject := i입니다.

rdf:annotation 또는 rdf:annotationNodeID 어트리뷰트 a 중 하나가 주어지면, 위의 문장은 트리플 용어 t를 만드는 데 사용되며, 다음 문장이 e.parent.graph에 추가됩니다:

   a.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies> t.rdf-term .

6.2.16 생성식 literalPropertyElt

start-element(IRI == propertyElementURIs ),
    attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, datatypeAttr?))
text()
end-element()

빈 리터럴의 경우는 생성식 emptyPropertyElt에 정의되어 있음에 유의하십시오.

요소 e와 텍스트 이벤트 t에 대해. Unicode 문자열 t.string-value는 Normal Form C [NFC]에 있는 것이 SHOULD 됩니다. rdf:datatype 어트리뷰트 d가 주어진 경우 o := typed-literal(literal-value := t.string-value, literal-datatype := d.rdf-term) 이고, 그렇지 않으면 o := literal(literal-value := t.string-value, literal-language := e.language, literal-direction := e.direction) 이며 다음 문장이 e.parent.graph에 추가됩니다:

rdf:ID 어트리뷰트 a가 주어진 경우, 위의 문장은 i := iri(identifier := resolve(e, concat("#", a.string-value)))로 6.3 구체화 규칙을 사용하여 구체화되며, e.subject := i입니다.

rdf:annotation 또는 rdf:annotationNodeID 어트리뷰트 a 중 하나가 주어지면, 위의 문장은 트리플 용어 t를 만드는 데 사용되며, 다음 문장이 e.parent.graph에 추가됩니다:

   a.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies> t.rdf-term .

6.2.17 생성식 parseTypeLiteralPropertyElt

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

start-element(IRI == propertyElementURIs ),
    attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, parseLiteral))
literal
end-element()

요소 erdf:parseType="Literal" 콘텐츠인 리터럴 lit에 대해. lit은 구문 데이터 모델 매핑에 의해 이벤트로 변환되지 않으며 (섹션 5. 구문 데이터 모델에 언급된 대로) XML 정보 항목의 XML Infoset으로 남습니다.

lit은 다음 알고리즘에 의해 RDF 그래프 x(Unicode 문자열) 안의 XML 리터럴의 어휘 형식으로 변환됩니다. 이는 어떤 구현 방법도 의무화하지 않습니다 — 같은 결과를 제공하는 다른 방법을 사용할 수 있습니다.

  1. lit을 사용하여 XPath sequence [XPATH-DATAMODEL-30]를 구성합니다.
  2. https://www.w3.org/TR/xpath-functions-30/#func-serialize [XPATH-FUNCTIONS-30]를 이 시퀀스에 적용하여 xsd:string x를 얻습니다.
  3. Unicode 문자열 xlit의 어휘 형식으로 사용됩니다
  4. 이 Unicode 문자열 x는 NFC Normal Form C [NFC]에 있는 것이 SHOULD 됩니다

그런 다음 o := typed-literal(literal-value := x, literal-datatype := http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral ) 이며 다음 문장이 e.parent.graph에 추가됩니다:

rdf:ID 어트리뷰트 a가 주어진 경우, 위의 문장은 i := iri(identifier := resolve(e, concat("#", a.string-value)))로 6.3 구체화 규칙을 사용하여 구체화되며, e.subject := i입니다.

rdf:annotation 또는 rdf:annotationNodeID 어트리뷰트 a 중 하나가 주어지면, 위의 문장은 트리플 용어 t를 만드는 데 사용되며, 다음 문장이 e.parent.graph에 추가됩니다:

   a.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies> t.rdf-term .

6.2.18 생성식 parseTypeResourcePropertyElt

start-element(IRI == propertyElementURIs ),
    attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, parseResource))
propertyEltList
end-element()

비어 있을 수 있는 요소 콘텐츠 c를 가진 요소 e에 대해.

n := bnodeid(identifier := generated-blank-node-id()).

다음 문장을 e.parent.graph에 추가합니다:

rdf:ID 어트리뷰트 a가 주어진 경우, 위의 문장은 i := iri(identifier := resolve(e, concat("#", a.string-value)))로 6.3 구체화 규칙을 사용하여 구체화되며, e.subject := i입니다.

rdf:annotation 또는 rdf:annotationNodeID 어트리뷰트 a 중 하나가 주어지면, 위의 문장은 트리플 용어 t를 만드는 데 사용되며, 다음 문장이 e.parent.graph에 추가됩니다:

   a.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies> t.rdf-term .

요소 콘텐츠 c가 비어 있지 않으면, 이벤트 n을 사용하여 다음과 같이 새 이벤트 시퀀스를 만듭니다:

start-element(IRI := rdf:Description,
    subject := n,
    attributes := set())
c
end-element()

그런 다음 생성식 nodeElement를 사용하여 결과 시퀀스를 처리합니다.

6.2.19 생성식 parseTypeTriplePropertyElt

start-element(IRI == propertyElementURIs ),
    attributes == set(parseTriple))
propertyEltList
end-element()

요소 콘텐츠 c를 가진 요소 e에 대해.

다음과 같이 새 이벤트 시퀀스를 만듭니다:

start-element(IRI := nodeElementIRIs,
    attributes := set())
    graph := 새 RDF 그래프)
c
end-element()

그런 다음 생성식 nodeElement를 사용하여 결과 시퀀스를 처리합니다.

노드 시퀀스를 처리한 후, e.parent.graph는 단일 트리플을 포함하는 RDF 그래프여야 MUST 합니다.

e.subject := triple(s, p, o)입니다. 여기서 s, p, 및 oe.parent.graph 안의 유일한 트리플의 주어, 술어, 및 목적어입니다.

다음 문장이 e.parent.graph에 추가됩니다:

6.2.20 생성식 parseTypeCollectionPropertyElt

start-element(IRI == propertyElementURIs ),
    attributes == set(idAttr?, parseCollection))
nodeElementList
end-element()

비어 있을 수 있는 nodeElementList nel을 가진 요소 이벤트 e에 대해, s:=list()로 설정합니다.

nel 안의 각 요소 이벤트 f에 대해, n := bnodeid(identifier := generated-blank-node-id())로 하고, ns에 추가하여 이벤트 시퀀스를 만듭니다.

s가 비어 있지 않으면, ns의 첫 번째 이벤트 식별자이고 다음 문장이 e.parent.graph에 추가됩니다:

그렇지 않으면 다음 문장이 e.parent.graph에 추가됩니다:

e.parent.subject.rdf-term e.IRI <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .

rdf:ID 어트리뷰트 a가 주어진 경우, 위 문장 중 하나는 i := iri(identifier := resolve(e, concat("#", a.string-value)))로 6.3 구체화 규칙을 사용하여 구체화됩니다.

rdf:annotation 또는 rdf:annotationNodeID 어트리뷰트 a 중 하나가 주어지면, 위의 문장은 트리플 용어 t를 만드는 데 사용되며, 다음 문장이 e.parent.graph에 추가됩니다:

   a.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies> t.rdf-term .

s가 비어 있으면, 더 이상의 작업은 수행되지 않습니다.

s의 각 이벤트 nnel의 대응하는 요소 이벤트 f에 대해, 다음 문장이 e.parent.graph에 추가됩니다:

n.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> f.rdf-term .

s의 연속되고 겹치는 각 이벤트 쌍 (n, o)에 대해, 다음 문장이 e.parent.graph에 추가됩니다:

n.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> o.rdf-term .

s가 비어 있지 않으면, ns의 마지막 이벤트 식별자이고, 다음 문장이 e.parent.graph에 추가됩니다:

n.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .

6.2.21 생성식 parseTypeOtherPropertyElt

start-element(IRI == propertyElementURIs ),
    attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, parseOther))
propertyEltList
end-element()

문자열 "Resource", "Literal", "Collection" 또는 "Triple" 이외의 모든 rdf:parseType 어트리뷰트 값은 값이 "Literal"인 것처럼 처리됩니다. 이 생성식은 생성식 parseTypeLiteralPropertyElt가 일치한 것처럼 일치하고 동작합니다. 다른 rdf:parseType 값에 대해서는 추가 트리플이 생성되지 않습니다.

6.2.22 생성식 emptyPropertyElt

start-element(IRI == propertyElementURIs ),
    attributes == set(idAttr?, (annotationAttr | annotationNodeIDAttr)?, ( resourceAttr | nodeIdAttr | datatypeAttr )?, propertyAttr*))
end-element()

6.2.23 생성식 idAttr

attribute(IRI == rdf:ID,
    string-value == rdf-id)

제약 조건:: constraint-idrdf:ID 어트리뷰트 값에 적용됩니다

6.2.24 생성식 nodeIdAttr

attribute(IRI == rdf:nodeID,
    string-value == rdf-id)

6.2.25 생성식 aboutAttr

attribute(IRI == rdf:about,
    string-value == string(IRI))

6.2.26 생성식 annotationAttr

attribute(IRI == rdf:annotation,
    string-value == string(IRI))

이 생성식은 rdf:version"1.2" 이상이 아닌 한 무시될 MAY 수 있습니다.

6.2.27 생성식 annotationNodeIDAttr

attribute(IRI == rdf:annotationNodeID,
    rdf-term == bnodeid(rdf-id))

이 생성식은 rdf:version"1.2" 이상이 아닌 한 무시될 MAY 수 있습니다.

6.2.28 생성식 propertyAttr

attribute(IRI == propertyAttributeIRIs,
    string-value == anyString)

6.2.29 생성식 resourceAttr

attribute(IRI == rdf:resource,
    string-value == string(IRI))

6.2.30 생성식 datatypeAttr

attribute(IRI == rdf:datatype,
    string-value == string(IRI))

6.2.31 생성식 parseLiteral

attribute(IRI == rdf:parseType,
    string-value == "Literal")

6.2.32 생성식 parseResource

attribute(IRI == rdf:parseType,
    string-value == "Resource")

6.2.33 생성식 parseTriple

attribute(IRI == rdf:parseType,
    string-value == "Triple")

6.2.34 생성식 parseCollection

attribute(IRI == rdf:parseType,
    string-value == "Collection")

6.2.35 생성식 parseOther

attribute(IRI == rdf:parseType,
    string-value == anyString - ("Resource" | "Literal" | "Collection") )

6.2.36 생성식 IRI

IRI.

6.2.37 생성식 literal

XML 정의 Content of Elements 규칙 [43] content에 따라 허용되는 모든 XML 요소 콘텐츠. 섹션 3.1 Start-Tags, End-Tags, and Empty-Element Tags에 있음

결과 이벤트의 string-value는 6.2.17 생성식 parseTypeLiteralPropertyElt에서 논의됩니다.

6.2.38 생성식 rdf-id

임의의 적법한 [XML-NAMES] 토큰 NCName과 일치하는 어트리뷰트 ·string-value·

6.3 구체화 규칙

주어진 IRI 이벤트 r와 N-Triples에 대응하는 용어 s, po를 가진 문장에 대해:

s p o .

다음 문장들을 그래프에 추가합니다:

r.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> s .
r.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> p .
r.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> o .
r.rdf-term <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .

6.4 목록 확장 규칙

주어진 요소 e에 대해, 새 IRI u := concat("http://www.w3.org/1999/02/22-rdf-syntax-ns#_", e.li-counter)를 만들고, e.li-counter 속성을 1 증가시킨 뒤 u를 반환합니다.

7. RDF 그래프를 RDF/XML로 직렬화하기

[RDF12-CONCEPTS]에 정의된 일부 RDF 그래프RDF/XML로 직렬화할 수 없습니다. 이러한 그래프는 다음과 같습니다:

XML 네임스페이스 한정 이름으로 변환할 수 없는 속성 이름을 사용함.
XML 네임스페이스 한정 이름 (QName)은 적법한 문자에 제한이 있어 모든 속성 URI를 이러한 이름으로 표현할 수는 없습니다. RDF 직렬화기 구현자는 URI를 네임스페이스 이름로컬 이름으로 나누기 위해, 마지막 XML 비-NCName 문자 뒤에서 분리하고, 이름의 첫 문자가 Letter 또는 '_'이 되도록 보장하는 것이 권장됩니다. URI가 비-NCName 문자로 끝나면 "이 그래프는 RDF/XML로 직렬화할 수 없음" 예외 또는 오류를 발생시킵니다.
부적절한 예약 이름을 속성으로 사용함
예를 들어, syntaxTerms 생성식 중 하나와 동일한 URI를 가진 속성입니다.
참고

구현 참고(정보성): RDF 그래프RDF/XML로 직렬화되고 XML Schema Datatype (XSD)를 가지는 경우, 공백 처리를 필요로 하지 않는 형식으로 작성되는 것이 SHOULD 됩니다. XSD 지원은 RDF 또는 RDF/XML에서 요구되지 않으므로 이는 선택 사항입니다.

8. SVG와 함께 RDF/XML 사용하기

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

SVG와 RDF 호환 메타데이터를 연결하기 위한 표준화된 접근 방식이 있습니다 — 이 목적을 위해 명시적으로 설계된 metadata 요소로, Scalable Vector Graphics (SVG) 1.0 Specification [SVG10] 및 Scalable Vector Graphics (SVG) 1.1 (Second Edition) [SVG11]의 섹션 21 Metadata에 정의되어 있습니다.

이 문서는 metadata 요소 안에 이러한 임베드된 RDF/XML을 가진 SVG 예제 그래프 두 개를 포함합니다: 그림 1그림 2.

A. 감사의 말

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

A.1 원래 명세에 대한 감사의 말

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

이 문서는 RDF Core 작업 그룹의 장기간에 걸친 숙의의 산물이며, 그 구성원에는 다음이 포함되었습니다: Art Barstow (W3C) Dave Beckett (ILRT), Dan Brickley (W3C/ILRT), Dan Connolly (W3C), Jeremy Carroll (Hewlett Packard), Ron Daniel (Interwoven Inc), Bill dehOra (InterX), Jos De Roo (AGFA), Jan Grant (ILRT), Graham Klyne (Clearswift and Nine by Nine), Frank Manola (MITRE Corporation), Brian McBride (Hewlett Packard), Eric Miller (W3C), Stephen Petschulat (IBM), Patrick Stickler (Nokia), Aaron Swartz (HWG), Mike Dean (BBN Technologies / Verizon), R. V. Guha (Alpiri Inc), Pat Hayes (IHMC), Sergey Melnik (Stanford University), Martyn Horner (Profium Ltd).

이 명세는 또한 Ora Lassilla와 Ralph Swick이 편집한 이전 RDF Model and Syntax 문서와, Dan Brickley 및 R. V. Guha가 편집한 RDF Schema를 바탕으로 합니다. 이 초기 작업에 기여한 RDFRDF Schema 작업 그룹 구성원은 다음과 같습니다: Nick Arnett (Verity), Tim Berners-Lee (W3C), Tim Bray (Textuality), Dan Brickley (ILRT / University of Bristol), Walter Chang (Adobe), Sailesh Chutani (Oracle), Dan Connolly (W3C), Ron Daniel (DATAFUSION), Charles Frankston (Microsoft), Patrick Gannon (CommerceNet), RV Guha (Epinions, previously of Netscape Communications), Tom Hill (Apple Computer), Arthur van Hoff (Marimba), Renato Iannella (DSTC), Sandeep Jain (Oracle), Kevin Jones, (InterMind), Emiko Kezuka (Digital Vision Laboratories), Joe Lapp (webMethods Inc.), Ora Lassila (Nokia Research Center), Andrew Layman (Microsoft), Ralph LeVan (OCLC), John McCarthy (Lawrence Berkeley National Laboratory), Chris McConnell (Microsoft), Murray Maloney (Grif), Michael Mealling (Network Solutions), Norbert Mikula (DataChannel), Eric Miller (OCLC), Jim Miller (W3C, emeritus), Frank Olken (Lawrence Berkeley National Laboratory), Jean Paoli (Microsoft), Sri Raghavan (Digital/Compaq), Lisa Rein (webMethods Inc.), Paul Resnick (University of Michigan), Bill Roberts (KnowledgeCite), Tsuyoshi Sakata (Digital Vision Laboratories), Bob Schloss (IBM), Leon Shklar (Pencom Web Works), David Singer (IBM), Wei (William) Song (SISU), Neel Sundaresan (IBM), Ralph Swick (W3C), Naohiko Uramoto (IBM), Charles Wicksteed (Reuters Ltd.), Misha Wolf (Reuters Ltd.), Lauren Wood (SoftQuad).

A.2 RDF 1.1에 대한 감사의 말

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

Gavin Carothers는 생성식 parseTypeLiteralPropertyElt에 대한 RDF 1.1 업데이트를 제공했습니다. Ivan Herman은 귀중한 의견을 제공하고 그림 1과 2를 다시 작업했습니다.

이 명세는 RDFcore 작업 그룹 구성원과 RDFRDF Schema 작업 그룹의 장기간에 걸친 숙의의 산물입니다.

다음 사람들은 이 문서에 귀중한 기여를 했습니다:

A.3 RDF 1.2에 대한 감사의 말

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

편집자 외에도 다음 사람들이 이 명세에 기여했습니다: Andy Seaborne, Denis Ah-Kang, Dominik Tomaszuk, Gregory Todd Williams, John Walker, 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 구성원을 인정할 것인가? 기여자 목록을 찾기가 쉽지 않습니다.

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

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

C. 구문 스키마

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

이 부록은 RDF/XML 형식을 검증하기 위한 XML 스키마를 포함합니다. 이들은 정보 제공만을 위한 예제 스키마이며 이 명세의 일부가 아닙니다.

C.1 RELAX NG Compact Schema

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

이것은 RDF/XML을 위한 RELAX NG Compact의 예제 스키마(읽기 쉽게 하기 위한 것)입니다. 애플리케이션은 RELAX NG XML 버전도 사용할 수 있습니다. 이러한 형식은 Information technology -- Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG [RELAXNG-SCHEMA]에 설명되어 있습니다.

참고

RNGC 스키마는 문법과 맞추려는 시도로 업데이트되었지만, 이는 RDF/XML을 검증하는 데 확인되거나 사용되지는 않았습니다.

#
# RELAX NG Compact Schema for RDF/XML Syntax
#
# This schema is for information only and NON-NORMATIVE
#
# It is based on one originally written by James Clark in
# https://lists.w3.org/Archives/Public/www-rdf-comments/2001JulSep/0248.html
# and updated with later changes.
#

namespace local = ""
namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
namespace its = "http://www.w3.org/2005/11/its"

start = doc

# I cannot seem to do this in RNGC so they are expanded in-line

# coreSyntaxTerms = rdf:RDF | rdf:ID | rdf:annotation | rdf:annotationNodeID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype | rdf:version
# syntaxTerms = coreSyntaxTerms | rdf:Description | rdf:li
# oldTerms    = rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID
# nodeElementIRIs       = * - ( coreSyntaxTerms | rdf:li | oldTerms )
# propertyElementURIs   = * - ( coreSyntaxTerms | rdf:Description | oldTerms )
# propertyAttributeIRIs = * - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )

# Also needed to allow rdf:li on all property element productions
# since we can't capture the rdf:li rewriting to rdf_<n> in relaxng

# Need to add these explicitly
xmllang = attribute xml:lang { text }
xmlbase = attribute xml:base { text }
# and to forbid every other xml:* attribute, element

doc =
  RDF | nodeElement

RDF =
  element rdf:RDF {
     xmllang?, xmlbase?, nodeElementList
}

nodeElementList =
  nodeElement*

  # Should be something like:
  #  ws* , (  nodeElement , ws* )*
  # but RELAXNG does this by default, ignoring whitespace separating tags.

nodeElement =
  element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
                rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID ) {
      (idAttr | nodeIdAttr | aboutAttr )?, xmllang?, xmlbase?, propertyAttr*, propertyEltList
  }

  # It is not possible to say "and not things
  # beginning with _ in the rdf: namespace" in RELAX NG.

ws =
  " "

  # Not used in this RELAX NG schema; but should be any legal XML
  # whitespace defined by https://www.w3.org/TR/2000/REC-xml-20001006#NT-S


propertyEltList =
  propertyElt*

  # Should be something like:
  #  ws* , ( propertyElt , ws* )*
  # but RELAXNG does this by default, ignoring whitespace separating tags.

propertyElt =
  resourcePropertyElt |
  literalPropertyElt |
  parseTypeLiteralPropertyElt |
  parseTypeResourcePropertyElt |
  parseTypeTriplePropertyElt |
  parseTypeCollectionPropertyElt |
  parseTypeOtherPropertyElt |
  emptyPropertyElt

resourcePropertyElt =
  element * - ( local:* | rdf:RDF | rdf:ID |
                rdf:annotation | rdf:annotationNodeID |
                rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype | rdf:version |
                its:dir | its:version |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, (annotationAttr | annotationNodeIDAttr)?, xmllang?, xmlbase?, versionAttr?, dirAttr?, itsVersionAttr?, nodeElement
  }

literalPropertyElt =
  element * - ( local:* | rdf:RDF | rdf:ID |
                rdf:annotation | rdf:annotationNodeID |
                rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype | rdf:version |
                its:dir | its:version |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr? , (annotationAttr | annotationNodeIDAttr)?, datatypeAttr?, xmllang?, xmlbase?, versionAttr?, dirAttr?, itsVersionAttr?, text
  }

parseTypeLiteralPropertyElt =
  element * - ( local:* | rdf:RDF | rdf:ID |
                rdf:annotation | rdf:annotationNodeID |
                rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype | rdf:version |
                its:dir | its:version |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, (annotationAttr | annotationNodeIDAttr)?, parseLiteral, xmllang?, xmlbase?, versionAttr?, dirAttr?, itsVersionAttr?, literal
  }

parseTypeResourcePropertyElt =
  element * - ( local:* | rdf:RDF | rdf:ID |
                rdf:annotation | rdf:annotationNodeID |
                rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype | rdf:version |
                its:dir | its:version |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, (annotationAttr | annotationNodeIDAttr)?, parseResource, xmllang?, xmlbase?, versionAttr?, dirAttr?, itsVersionAttr?, propertyEltList
  }

parseTypeTriplePropertyElt =
  element * - ( local:* | rdf:RDF | rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype | rdf:version |
                its:dir | its:version |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, (annotationAttr | annotationNodeIDAttr)?, parseResource, xmllang?, xmlbase?, versionAttr?, dirAttr?, itsVersionAttr?, propertyEltList
  }

parseTypeCollectionPropertyElt =
  element * - ( local:* | rdf:RDF | rdf:ID |
                rdf:annotation | rdf:annotationNodeID |
                rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype | rdf:version |
                its:dir | its:version |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, (annotationAttr | annotationNodeIDAttr)?, xmllang?, xmlbase?, versionAttr?, dirAttr?, itsVersionAttr?, parseCollection, nodeElementList
  }

parseTypeOtherPropertyElt =
  element * - ( local:* | rdf:RDF | rdf:ID |
                rdf:annotation | rdf:annotationNodeID |
                rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype | rdf:version |
                its:dir | its:version |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, (annotationAttr | annotationNodeIDAttr)?, xmllang?, xmlbase?, versionAttr?, dirAttr?, itsVersionAttr?, parseOther, any
  }

emptyPropertyElt =
   element * - ( local:* | rdf:RDF | rdf:ID |
                 rdf:annotation | rdf:annotationNodeID |
                 rdf:about | rdf:parseType |
                 rdf:resource | rdf:nodeID | rdf:datatype | rdf:version |
                 its:dir | its:version |
                 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                 xml:* ) {
       idAttr?, (resourceAttr | nodeIdAttr | datatypeAttr )?, xmllang?,
       xmlbase?, versionAttr?, dirAttr?, itsVersionAttr?, propertyAttr*
   }

idAttr =
  attribute rdf:ID {
      IDsymbol
  }

nodeIdAttr =
  attribute rdf:nodeID {
      IDsymbol
  }

aboutAttr =
  attribute rdf:about {
      IRI
  }

propertyAttr =
  attribute * - ( local:* | rdf:RDF | rdf:ID |
                  rdf:annotation | rdf:annotationNodeID |
                  rdf:about | rdf:parseType |
                  rdf:resource | rdf:nodeID | rdf:datatype | rdf:version |
                  rdf:li | its:dir | | its:version
                  rdf:Description | rdf:aboutEach |
                  rdf:aboutEachPrefix | rdf:bagID |
                  xml:* ) {
      string
  }

resourceAttr =
  attribute rdf:resource {
      IRI
  }

datatypeAttr =
  attribute rdf:datatype {
      IRI
  }

parseLiteral =
  attribute rdf:parseType {
      "Literal"
  }

parseResource =
  attribute rdf:parseType {
      "Resource"
  }

parseTriple =
  attribute rdf:parseType {
      "Triple"
  }

parseCollection =
  attribute rdf:parseType {
      "Collection"
  }

parseOther =
  attribute rdf:parseType {
      text
  }

versionAttr =
  attribute rdf:version {
      text
  }

dirAttr =
  attribute its:dir {
      text
  }

itsVersionAttr =
  attribute its:version {
      text
  }

IRI =
  string

literal =
  any

IDsymbol =
  xsd:NMTOKEN

any =
  mixed { element * { attribute * { text }*, any }* }

D. 색인

D.1 이 명세에서 정의된 용어

D.2 참조로 정의된 용어

E. 참고 문헌

E.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
[NFC]
Web NFC API. Luc Yriarte; Samuel Ortiz; Don Coleman. W3C. 2015년 6월 16일. W3C Working Group Note. URL: https://www.w3.org/TR/nfc/
[RDF-SYNTAX-GRAMMAR-19990222]
Resource Description Framework (RDF) Model and Syntax Specification. Ora Lassila. W3C. 1999년 2월 22일. W3C Recommendation. URL: https://www.w3.org/TR/1999/REC-rdf-syntax-19990222/
[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/
[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/
[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
[RFC3870]
application/rdf+xml Media Type Registration. A. Swartz. IETF. 2004년 9월. Informational. URL: https://www.rfc-editor.org/rfc/rfc3870
[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
[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
[SAX]
SAX – The Simple API for XML. Steve Cornish. 1999년 10월. URL: https://accu.org/journals/overload/7/34/cornish_515/
[UNICODE]
The Unicode Standard. Unicode Consortium. URL: https://www.unicode.org/versions/latest/
[XML-INFOSET]
XML Information Set (Second Edition). John Cowan; Richard Tobin. W3C. 2004년 2월 4일. W3C Recommendation. URL: https://www.w3.org/TR/xml-infoset/
[XML-NAMES]
Namespaces in XML 1.0 (Third Edition). Tim Bray; Dave Hollander; Andrew Layman; Richard Tobin; Henry Thompson et al. W3C. 2009년 12월 8일. W3C Recommendation. URL: https://www.w3.org/TR/xml-names/
[XML11]
Extensible Markup Language (XML) 1.1 (Second Edition). Tim Bray; Jean Paoli; Michael Sperberg-McQueen; Eve Maler; François Yergeau; John Cowan et al. W3C. 2006년 8월 16일. W3C Recommendation. URL: https://www.w3.org/TR/xml11/
[XMLBASE]
XML Base (Second Edition). Jonathan Marsh; Richard Tobin. W3C. 2009년 1월 28일. W3C Recommendation. URL: https://www.w3.org/TR/xmlbase/
[XMLSCHEMA11-2]
W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes. David Peterson; Sandy Gao; Ashok Malhotra; Michael Sperberg-McQueen; Henry Thompson; Paul V. Biron et al. W3C. 2012년 4월 5일. W3C Recommendation. URL: https://www.w3.org/TR/xmlschema11-2/
[XPATH]
XML Path Language (XPath) Version 1.0. James Clark; Steven DeRose. W3C. 1999년 11월 16일. W3C Recommendation. URL: https://www.w3.org/TR/xpath-10/

E.2 정보성 참고 문헌

[CHARMOD]
Character Model for the World Wide Web 1.0: Fundamentals. Martin Dürst; François Yergeau; Richard Ishida; Misha Wolf; Tex Texin et al. W3C. 2005년 2월 15일. W3C Recommendation. URL: https://www.w3.org/TR/charmod/
[ITS20]
Internationalization Tag Set (ITS) Version 2.0. David Filip; Shaun McCance; David Lewis; Christian Lieske; Arle Lommel; Jirka Kosek; Felix Sasaki; Yves Savourel. W3C. 2013년 10월 29일. W3C Recommendation. URL: https://www.w3.org/TR/its20/
[JSON-LD11]
JSON-LD 1.1. Gregg Kellogg; Pierre-Antoine Champin; Dave Longley. W3C. 2020년 7월 16일. W3C Recommendation. URL: https://www.w3.org/TR/json-ld11/
[RDF-SCHEMA]
RDF Schema 1.1. Dan Brickley; Ramanathan Guha. W3C. 2014년 2월 25일. W3C Recommendation. URL: https://www.w3.org/TR/rdf-schema/
[rdf-syntax-grammar]
RDF 1.1 XML Syntax. Fabien Gandon; Guus Schreiber. W3C. 2014년 2월 25일. W3C Recommendation. URL: https://www.w3.org/TR/rdf-syntax-grammar/
[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-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-TRIG]
RDF 1.2 TriG. Gregg Kellogg; Dominik Tomaszuk. W3C. 2026년 5월 28일. W3C Working Draft. URL: https://www.w3.org/TR/rdf12-trig/
[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/
[RDFA-PRIMER]
RDFa 1.1 Primer - Third Edition. Ivan Herman; Ben Adida; Manu Sporny; Mark Birbeck. W3C. 2015년 3월 17일. W3C Working Group Note. URL: https://www.w3.org/TR/rdfa-primer/
[RELAXNG-SCHEMA]
Information technology -- Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG. ISO/IEC. 2008. URL: http://standards.iso.org/ittf/PubliclyAvailableStandards/c052348_ISO_IEC_19757-2_2008(E).zip
[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/
[STRIPEDRDF]
RDF: Understanding the Striped RDF/XML Syntax. W3C. 2001. Team Submission. URL: http://www.w3.org/2001/10/stripes/
[SVG10]
Scalable Vector Graphics (SVG) 1.0 Specification. Jon Ferraiolo. W3C. 2001년 9월 4일. W3C Recommendation. URL: https://www.w3.org/TR/SVG/
[SVG11]
Scalable Vector Graphics (SVG) 1.1 (Second Edition). Erik Dahlström; Patrick Dengler; Anthony Grasso; Chris Lilley; Cameron McCormack; Doug Schepers; Jonathan Watt; Jon Ferraiolo; Jun Fujisawa; Dean Jackson et al. W3C. 2011년 8월 16일. W3C Recommendation. URL: https://www.w3.org/TR/SVG11/
[XPATH-DATAMODEL-30]
XQuery and XPath Data Model 3.0. Norman Walsh; Anders Berglund; John Snelson. W3C. 2014년 4월 8일. W3C Recommendation. URL: https://www.w3.org/TR/xpath-datamodel-30/
[XPATH-FUNCTIONS-30]
XPath and XQuery Functions and Operators 3.0. Michael Kay. W3C. 2014년 4월 8일. W3C Recommendation. URL: https://www.w3.org/TR/xpath-functions-30/