<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 処理系の都合で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor> が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RDF</anchor>
として扱えたらなあと思うことがあります。</p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GSS</anchor> なんて近いんですが、完全写像じゃありませんから、
CSS そのものを扱うのには不都合です。
欲しいのは完全にあたらしくて綺麗な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スタイル言語</anchor>じゃなくて、
とりあえず手元の CSS を処理するための方法だってことです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> ってことでちょっと考えてみます。</p><p>In CSS:<pre>ns|element1 &gt; ns|element2 {
  display : block;
  font-family : &quot;font 1&quot;, &quot;font 2&quot;, serif;
  color : red;
  background-color : #2351A4;
  border : thin dotted rgb (12, 53, 53);
}</pre></p><p>In RDF/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">N3</anchor>:<pre>
[a             css-selector:element;
 xmlnames:name ns:element2;
 css-selector:child-of
               [a           css-selector:element;
                css:name    ns:element1;
               ]
]
    css:display       css:block;
    css:font-family   [a css:font; css-font:name &quot;font 1&quot;],
                      [a css:font; css-font:name &quot;font 2&quot;],
                      css-font:serif;
    css:color         [a css:color; css-color:name &quot;red&quot;];
    css:background-color [a css:color; css-color:hex &quot;2351A4&quot;];
    css:border        [a                 css:border;
                       css-border:width  css:thin;
                       css-border:style  css:dotted;
                       css-border:color  [a               css:color;
                                          css-color:red   &quot;12&quot;;
                                          css-color:green &quot;53&quot;;
                                          css-color:blue  &quot;53&quot;;
    .                                         ];</pre></p><p>とか。特に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">選択子</anchor>辺りは手書きは無理かもだけど、
そもそも処理用だしいいかなって感じ。</p><section><h1>属性・特性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>・<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特性</anchor>には<code class="URI"><var>名前空間</var>:<var>名前</var></code>という資源名を与えます。
例えば、 <code class="CSS"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">font-size</anchor></code> 属性の資源名は
<code class="URI"><var>名前空間</var>:font-size</code> になります。</p><p>これが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">述語</anchor>になります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RDF</anchor> 的には特性なので、小文字のままにします。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 値は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">目的語</anchor>とします。
具体的表現は属性・特性の種類により異なりますが、
基本的には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表記</anchor>ではなく資源にします。
資源の型 (class) は可能なら適当な代表属性名の先頭を大文字にしたものとします。</p><p>例えば、色を表す class は、
<code class="URI"><var>名前空間</var>:Color</code> とします。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>見出し語</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 見出し語は表記ではなく資源にします。
名前空間は一応属性名とは別にしますが、
種類別に分けるのがいいか全部同じ空間でいいか
(例えば &lt;color&gt;/red と &lt;font-family&gt;/serif
を同じ名前空間にするのかどうか) は検討の余地があります。</p><p>表記にしないのは、表す対象が見出し語の文字列ではなく何らかの概念
(red なら「赤」という色) であるからにして、
見出し語はそのラベルに過ぎないからです。</p><p>参考 : 見出し語の RDF/N3 定義の例
(CSS の記述の変換結果例じゃないよん):<pre>  css-kwd:red
    a             css:Color;
    css:rgb-red   &quot;255&quot;;
    css:rgb-green &quot;0&quot;;
    css:rgb-blue  &quot;0&quot;;
  .
  
  css-kwd:serif
    a             css:Font;
                  ## あるシステムでの束縛の例
    css:font-name &quot;Times New Roman&quot;;
  .
  
  css-kwd:pointer
    a             css:Cursor;
    something:same-as <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="file://path/to/pointer.cur">file://path/to/pointer.cur</anchor-external>;
  .
  
  css-kwd:bolder
    a             css:Weight;
    ## 定義しようがないかも
  .
  
  css-kwd:inherit
    a             css:Property;
    something:css-level something:css2;
  .</pre></p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>数値</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end><pre>  ## font-size: 12em;
  css:font-size  [
                  a            css:Length;
                  css-unit:em  &quot;12&quot;;
                 ];
  
  ## border-width: 0;
  css:border-width css-kwd:zero;
    と
  css:border-width [
                    a          css:Length;
                    css-unit:_ &quot;0&quot;;
                   ];
    とどっちがいいか。
  
  ## font-weight: 700;
  css:font-weight [
                   a           css:Weight;
                   css-unit:_  &quot;700&quot;;
                  ];</pre></p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>URI</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end><pre>  ## background-image: url(path/to/image);
  css:background-image &lt;path/to/image&gt;;</pre></p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>文字列</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end><pre>  ## content: &quot;ABC&quot;;
  css:content &quot;ABC&quot;;
  
  ## content: &quot;Something&quot; url(path/to/resource);
  css:content [
               a      rdf:Seq;
               rdf:_1 &quot;Something&quot;;
               rdf:_2 &lt;path/to/resource&gt;;
              ];</pre></p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>複合</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end><pre>  ## quotes: &quot;{&quot; &quot;}&quot;;
  css:quotes [
              a       rdf:Seq;
              rdf:_1  &quot;{&quot;;
              rdf:_2  &quot;}&quot;;
             ];
  
  ## margin: 1px 2px;
  css:margin [
              a          css:Margin;
              css:top    [a css:Length; css-unit:px &quot;1&quot;];
              css:bottom [a css:Length; css-unit:px &quot;1&quot;];
              css:right  [a css:Length; css-unit:px &quot;2&quot;];
              css:left   [a css:Length; css-unit:px &quot;2&quot;];
  ## cf. css:Margin rdf:isSubClassOf css:Rule
  
  ## border: thin dashed blue;
  css:border [
              a             css:Border;
              css-bdr:width css-kwd:thin;
              css-bdr:style css-kwd:dashed;
              css-bdr:color css-kwd:blue;
             ];
  ## border-left: 1cm solid #c0c0c0;
  css-bdr:left [
                a             css:Border;
                css-bdr:width [a css:Length; css-unit:cm &quot;1&quot;];
                css-bdr:style css-kwd:solid;
                css-bdr:color [a css:Color; css:hex &quot;C0C0C0&quot;];
               ];
  ## border-color: rgb ( 1, 2, 3);
  css-bdr:color [
                 a              css:Color;
                 css-rgb:red    &quot;1&quot;;
                 css-rgb:blue   &quot;2&quot;;
                 css-rgb:green  &quot;3&quot;;
                ];
  # cf.
    @prefix css-bdr &lt;<var>css:</var>border-&gt;.
    @prefix css-rgb &lt;<var>css:</var>rgb-&gt;.</pre></p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end>
Nearby: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS/XML</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SAX</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS DOM</anchor> (CSS OM)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RDF/CSS</anchor> は、逆に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor> に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RDF</anchor> を埋め込むものでした。</p></section></body></html>