В настоящее время я изучаю определение онтологии SPARQL
, которое содержится в XML - что-то, от чего я довольно смутно.
Я знаком с концепцией namespacing
. т. е. такой узел XML:
<rdf:Description rdf:about="...">
<rdf:type rdf:resource="..."/>
<rdf:type rdf:resource="..."/>
<rdfs:domain rdf:resource="..."/>
<rdfs:range rdf:resource="..."/>
</rdf:Description>
ссылается на пространства имен rdf
и rdfs
, которые определены в узле XML document root:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
И тогда я понимаю, что для любого XML приложения синтаксического анализа это означает, что тогда узел эффективно работает:
<Description about="...">
<type resource="..."/>
<type resource="..."/>
<domain resource="..."/>
<range resource="..."/>
</Description>
С тегами (Description
, type
, domain
и range
), а также атрибуты тега (about
и resource
), уникальные в контексте анализа rdf
XML. Я думаю, что для парсера нужны правила - но эти теги никогда не спутают с тегами с тем же именем, но определенными для другой цели. т.е. xmlns="http://finanacial-instruments.com/xmlns"
, где теги с одинаковыми именами используются в разных контекстах (пожалуйста, дайте мне знать, если это не имеет смысла).
Вопрос
В В этом конкретном документе XML, который я просматриваю, узел root сам по себе является пространством имен:
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns="http://meta.icos-cp.eu/ontologies/cpmeta/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
, то есть узел root равен <rdf:RDF ...>
. С моей точки зрения это не имеет большого значения, так как я уже знал, что это документ RDF. Но какой смысл иметь пространство имен root и где это пространство имен определено?
============= EDIT
Глядя на ответ ниже, эта ссылка: http://www.jclark.com/xml/xmlns.htm помог мне.
Включает следующее:
<cars:part xmlns:cars="http://www.cars.com/xml"/>
maps to
<{http://www.cars.com/xml}part/>
Я не осознавал, что пространство имен также применимо к тегу, в котором указано пространство имен.