Please add RDF term checking operators to sparql

I think these would be useful operators for value testing of SPARQL
RDF Terms, to go along with lang() and dtype()* operating on
literal terms.

I propose adding to 10.2 10.2 Value Testing / RDF Types
  http://www.w3.org/2001/sw/DataAccess/rq23/#sparqlTests

possibly a new section or could be in one of the existing ones:

10.2.3 SPARQL Operations on RDF Terms

The following table provides operations to test if an expression is
one of the three RDF Terms[#href to definition in section 2.2].

Operator: isblank(arg)
Meaning: Tests if the expression is an RDF blank node
                ( http://www.w3.org/TR/rdf-concepts/#dfn-blank-node )
Return: xsd:boolean
  isblank(_:a)       => true
  isblank(<uri>)     => false
  isblank("literal") => false

Operator: isuri(arg)
Meaning: Tests if the expression is an RDF URI Reference 
              ( http://www.w3.org/TR/rdf-concepts/#dfn-URI-reference )
Return: xsd:boolean
  isuri(<uri>)     => true
  isuri(_:blank)   => false
  isuri("literal") => false

  [ could be isresource() but then they are all RDF resources

Operator: isliteral(arg)
Meaning: Tests if the expression is an RDF Literal
               ( http://www.w3.org/TR/rdf-concepts/#dfn-literal )
Return: xsd:boolean
  isliteral(<uri>)     => true
  isliteral(_:blank)   => false
  isliteral("literal") => true


Examples of use

Find literals in French
  SELECT ?z
  WHERE (?x ?y ?z)
  AND isLiteral(?z) and lang(?z) = "fr"

Find blank subject nodes
  SELECT ?x
  WHERE (?x ?y ?z)
  AND isBlank(?x)

Find triples with URIs
  SELECT ?x
  WHERE (?x ?y ?z)
  AND isURI(?z)


Dave

* Yuck - datatype() is a full word for 3 chars more and we have rdf:datatype
lang() is OK since xml:lang has lots of use

Received on Tuesday, 25 January 2005 10:39:23 UTC