Pregunta ¿Coincidencia de cadenas en SPARQL?


En ANSI SQL, puede escribir algo como:

Select * From DBTable Where DBTable.Description LIKE "MEET"

o

Select * From DBTable Where DBTable.Description LIKE "%MEET%"

Con lo que me gustaría ayudar es escribiendo el equivalente SPARQL de lo anterior, por favor.


8
2018-06-17 10:16


origen


Respuestas:


Usar una filtro regex. Puedes encontrar un breve tutorial aquí

Esto es lo que parece:

PREFIX ns: <http://example.com/namespace>

SELECT ?x
WHERE
{ ?x ns:SomePredicate ?y .
  FILTER regex(?y, "YOUR_REGEX", "i") }

YOUR_REGEX debe ser una expresión de la Lenguaje de expresiones regulares XQuery

i es un opcional bandera. Significa que el partido no distingue entre mayúsculas y minúsculas.


10
2018-06-17 10:45



Si tiene una cadena fija para que coincida, puede usarla directamente en su patrón de gráfico, p.

PREFIX ns: <http://example.com/namespace>

SELECT ?x
WHERE
{ ?x ns:SomePredicate "YourString" }

Tenga en cuenta que esto no siempre funciona porque la coincidencia de patrones se basa en la igualdad de términos RDF que significa "YourString" no se considera el mismo término que decir "YourString"@en así que si eso puede ser un problema use el REGEX enfoque Tom sugiere

Además, algunos motores SPARQL proporcionan una extensión de búsqueda de texto completo que le permite integrar consultas de estilo Lucene en sus consultas SPARQL que pueden ajustarse mejor a su caso de uso y casi con seguridad ser más eficientes para la búsqueda genérica que de otra manera requeriría un REGEX


4
2018-06-17 19:37