2012-02-07 6 views
5

El documento "Resource Description Framework (RDF): Conceptos y sintaxis abstracta" documento Section 6.4 establece que "Una referencia URI dentro de un gráfico RDF (una referencia RDF URI) ... produciría una secuencia de caracteres URI válida (según RFC2396, secciones 2.1) que representa un URI absoluto con el identificador de fragmento opcional ... "¿Se permite una "cadena de consulta" en un URI utilizado en RDF?

RFC 2396, la Sección 2.1 solo se refiere a la codificación de los caracteres individuales. No habla sobre qué secciones de un URI estándar están permitidas dentro de RDF.

En algunos documentos RDF que he visto, el término "URI absoluto" parece referirse solo al domain.tld/path/name # opcionalFragmento de un URI pero sin mencionar si una cadena de consulta (? Key1 = value1 & key2 = value2) (a veces conocido como datos CGI) está permitido o no permitido. Otra documentación de RDF solo utiliza el término "URI absoluto" en contraste con un URI relativo (/ just/a/path).

La búsqueda de "cadena de consulta RDF URI" está plagada de resultados falsos en cosas como SPARQL.

Entonces, mi pregunta es: ¿Se permite una cadena de consulta HTML estándar en un URI utilizado en RDF o RDFa?

Si no, ¿por qué no? Entiendo que un URI no es una URL y no necesariamente se utilizará para recuperar una página web de un servidor. Sin embargo, los procesadores RDF leen esos URI y estoy pensando que podrían soportar algo de ayuda en forma de metadatos adicionales que podrían transmitirse a través de estas cadenas de "consultas".

[Actualización 9/02/2012] Aquí está el punto de mi pregunta: Estoy buscando una forma de indicar la "fuerza" de una conexión. Por ejemplo, no todos conocen: conoce a todos por igual. Es posible que nos hayamos reunido por unos minutos en una conferencia. O puedo haber vivido con alguien durante años. Todo es lo mismo para la FAOF. Sin embargo, si pudiera escribir foaf: sabe? Strength = +50, los procesadores que no saben qué hacer con la clave de resistencia podrían ignorarlo, mientras que aquellos que son "conscientes de la fuerza" tendrían metadatos adicionales valiosos. Podría crear un vocabulario que incluya el término "agreewith" y luego permitir que el valor de la clave de strength = sea de 0 a 100 (indicando porcentajes de acuerdo). Luego cubriría todo el rango de acuerdo con un término de vocabulario. {Nota: había pensado en permitir que el rango vaya de -100 a +100 para cubrir un rango de desacuerdo. Sin embargo, para compatibilidad con versiones anteriores necesitaríamos un término "desacuerdo" para que los procesadores que no son "conscientes de la fuerza" aún supieran la diferencia entre "estar de acuerdo" y "estar en desacuerdo".}}

Tal como está ahora, parece que hay no es posible que un razonador de RDF sepa la diferencia entre "apenas conocido" y "lo conoce mejor de lo que él mismo lo sabe". La decisión de tratar cada URI de predicado diferente con un valor diferente en un par clave-valor como un todo un predicado separado y completamente no relacionado parece estar arrojando casi toda la información más valiosa acerca de una conexión, todo por el simple hecho de escribir códigos y procesarlo rápidamente.

Podría haber otros usos valiosos para los pares clave-valor en una cadena de consulta que no sea crear un n tema, predicado u objeto completamente separados: podrían usarse para indicar quién agregó una entidad particular a un archivo .RDF editado conjuntamente. Tal como está, todo lo que un razonador de RDF sabe es que existe un triple, por ahí, en alguna parte. No tiene información adicional sobre la cual basar su razonamiento. Las contraseñas encriptadas podrían usarse para validar la confiabilidad de una fuente en lugar de simplemente decidir confiar o no confiar en un dominio completo.

Respuesta

7

Sí.

(¿Qué desea más?)

RDF se refiere a cosas que utilizan lo que coloquialmente se llaman 'URL'. Si quiere ser más preciso, IRI (esencialmente una forma de incluir más que ascii en las URL, por lo que puede usar caracteres exóticos en la barra de su navegador). La respuesta más precisa es demasiado tediosa para relacionarla, así que asume los IRI.

RDF utiliza referencias absolutas. Sus sintaxis pueden usar referencias relativas (por ejemplo, foo/bar), pero se resuelven en relación con la base del documento para convertirse en absolutas. Exactamente como enlaces html, de hecho.

Más allá de la sintaxis, RDF no se ocupa de las partes internas de estas referencias. Usted simplemente los compara carácter por personaje. Como consecuencia:

  • http://example.com/foo/bar == http://example.com/foo/bar
  • http://example.com/foo/bar?query=x == http://example.com/foo/bar?query=x
  • http://example.com/foo/bar != http://example.com/foo/bar?query=x
  • http://example.com/foo/bar#x == http://example.com/foo/bar#x
  • http://example.com/foo/bar != http://example.com/foo/bar#x
  • http://example.com/%66oo/bar != http://example.com/foo/bar

Tenga en cuenta que no lo hace incluso obtener la normalización.

Y, en particular, RDF no ve la parte de consulta como algo especial.

+0

Entonces, si tuviera que escribir un procesador RDF que tratara cualquier URI con identidades de dominio/ruta/nombre/porciones idénticas y luego tratara cualquier cadena de consulta como meramente metadatos adicionales sobre la conexión en particular, entonces ese procesador RDF estaría fuera de especificaciones? ¿Cree que habría algún interés en un procesador RDF que funcionara de esta manera? No veo la lógica en el tratamiento de example.com/foo/bar como completamente ajeno a example.com/foo/bar#x aparte de que simplemente hace que los procesadores de programación sean más fáciles. RDF podría ser mucho más rico de lo que este sistema hace posible. – GrantRobertson

+0

Si aplica un cierto grado de normalización, es discutible. Sin embargo, ignorar la cadena de consulta definitivamente es incorrecto. Sugeriría que 'http: //example.com/? Personid = xxx' fuera idéntico para todos los' xxx'. Pero podría hacer que la relación sea explícita: inserte una relación (es decir, triple) que enlace a 'http: // ejemplo.com /'; o puede crear una función de equivalencia SPARQL personalizada 'ex: sameIgnoringQuery (x, y)'. – user205512

+0

Bien, creo que ahora puedo revelar mi plan secreto. : ^) Ver mi publicación original para más información. – GrantRobertson

4

Para confirmar la respuesta anterior, sí.

Los URI son puramente sintácticos, por lo que se aplican las reglas enumeradas anteriormente.

Los URI que utilizan un fragmento no son desmarcables y cuando un agente intenta desreferenciar uno, lo resuelve en otro URI (que es una URL) eliminando el fragmento.

Por último, se recomienda que utilice (Identificadores de Recursos Internacionales) del IRI en lugar del URI de que sea posible

http://www.ietf.org/rfc/rfc3987.txt

Este specificies diferentes limitaciones y restricciones sintácticas.

+0

Muchas gracias. Si no fuera por este foro, nunca habría oído hablar de IRI. Sé lo que leeré mañana. – GrantRobertson

Cuestiones relacionadas