frogatto
frogatto

Reputation: 29285

Cardinality restrictions on SPARQL

My question is about SPARQL query language of RDF triples, suppose we have a family ontology written in RDF/XML format.

Now, I want to query all parents, for example, with at least two children (cardinality on hasChild relation) with SPARQL.

My question is, is it possible to write this query in SPARQL language, however I know this is possible to write this query in DL query language (Description Logic)

In more general form, Is it possible to apply some cardinality restrictions in SPARQL language?

Upvotes: 2

Views: 1115

Answers (1)

Joshua Taylor
Joshua Taylor

Reputation: 85863

Now, I want to query all parents, for example, with at least two children (cardinality on hasChild relation) with SPARQL.

You just select a parent and child in each row, then group by the parent, and then only take those that have at least two values for child:

select ?parent where {
  ?parent :hasChild ?child
}
group by ?parent
having (count(distinct ?child) >= 2)

Beware though; In OWL you can have an individual that must have at least two children, but that this query wouldn't return. E.g., if you have

TwoChildParent subClassof (hasChild min 2)
Joe a TwoChildParent

but don't have any

Joe hasChild ?x

triples, this query won't return Joe, even though Joe has at least two children.

Upvotes: 6

Related Questions