ejemplo - soap xml
Diferencias entre rdf: resource, rdf: about y rdf: ID (2)
Me gustaría aclarar algunos de los puntos excelentes en la respuesta proporcionada, pero solo con respecto a rdf: ID y rdf: about.
Las etiquetas se utilizan para construir un URI. Si no se proporciona el URI completo (como rdf: ID = "x"), el URI generado es relativo al URI base dentro del alcance que generalmente se deriva de la ubicación del documento, pero se puede especificar con el atributo xml: base .
El punto (mencionado anteriormente) es que rdf: about puede ser un URI completo, por lo que es fácil configurarlo.
rdf: ID no puede ser un URI completo, pero aún puede controlarlo si configura manualmente el atributo xml: base.
Por lo tanto, la regla general para mí es usar rdf: about para un identificador "conocido mundialmente" (cuando desea que el URI sea siempre el mismo) y usar rdf: ID al describir un recurso local cuyo URI no es cuidado fuera del documento actual.
¿Cuáles son las diferencias conceptuales entre rdf:resource
, rdf:about
y rdf:ID
? Hice una investigación pero la diferencia entre ellos aún no está clara para mí. Por ejemplo, si rdf:ID
se usa al declarar un recurso por primera vez, rdf:resource
se usa para hacer referencia a un recurso ya existente, etc.
Me alegraría si me das algunos pequeños ejemplos.
Para que quede claro, se trata solo de una forma particular de escribir rdf: RDF / XML. Otras sintaxis no presentan estas diferencias.
Con ese descargo de responsabilidad fuera del camino:
Lo que estamos tratando de hacer es escribir declaraciones de la forma:
subject predicate object
y en particular:
subjectURI predicate objectURI
Entonces, ¿cómo introducimos URI de sujeto y objeto en RDF / XML?
-
rdf:about
establece el URI del sujeto de una declaración, que puede ser absoluta (http://example.com/
) o resuelta en relación con la BASE del documento (por ejemplo,/foo/bar
,#frag
). (Comohref
en html) -
rdf:resource
establece el URI de objeto de una declaración, una vez más absoluta o relativa. -
rdf:ID
establece el URI del sujeto, pero solo puede estar dentro de este documento. Una identificación solo se puede usar una vez. Muy parecido a<a name="baz">
oid="baz"
en html.
rdf:ID
se recomienda desde
- puede reemplazarlo con un
rdf:about
ordf:resource
con un fragmento#baz
y - puede causar problemas xml si usa la misma ID más de una vez.
Es decir, es redundante y una fuente potencial de errores.
En retrospectiva, normalmente solo es necesario que haya un atributo para especificar un URI, ya que la sintaxis RDF / XML muestra si algo es un sujeto u objeto:
<ex:Foo ...> - subject
<ex:prop ... /> - property then object
</ex:Foo>
<ex:Foo ...> - subject
<ex:prop> - property
<ex:Bar ... /> - subject (and implictly an object chaining from previous)
...
(regla general: líneas impares rdf:about
, incluso líneas, rdf:resource
)
y usar rdf:about
y rdf:resource
en un elemento es casi siempre un error (estás en una posición de sujeto o en una posición de objeto).
tl; dr
Evitar rdf:ID
. Use rdf:about
y rdf:resource
como href, el primero para sujeto, el último para objetos.
Adicional
Olvidó mencionar que rdf:ID
se puede usar en un elemento de propiedad, pero hace algo que puede encontrar inesperado: reifica el triple. Evitar rdf:ID
.