SPARQL 我们什么时候使用 "a"

SPARQL When do we use the "a"

我是 SPARQL 的新手。我阅读了关于 Jena (https://jena.apache.org/tutorials/sparql.html) 的教程并且我理解了大部分示例。但是我真的不明白什么时候我们必须使用 a

例如这个三元组:

@prefix vCard:   <http://www.w3.org/2001/vcard-rdf/3.0#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<http://somewhere/MattJones/>  vCard:FN   "Matt Jones" .
<http://somewhere/MattJones/>  vCard:N    _:b0 .
_:b0  vCard:Family "Jones" .
_:b0  vCard:Given  "Matthew" .


<http://somewhere/RebeccaSmith/> vCard:FN    "Becky Smith" .
<http://somewhere/RebeccaSmith/> vCard:N     _:b1 .
_:b1 vCard:Family "Smith" .
_:b1 vCard:Given  "Rebecca" .

<http://somewhere/JohnSmith/>    vCard:FN    "John Smith" .
<http://somewhere/JohnSmith/>    vCard:N     _:b2 .
_:b2 vCard:Family "Smith" .
_:b2 vCard:Given  "John"  .

<http://somewhere/SarahJones/>   vCard:FN    "Sarah Jones" .
<http://somewhere/SarahJones/>   vCard:N     _:b3 .
_:b3 vCard:Family  "Jones" .
_:b3 vCard:Given   "Sarah" .

我们可以这样写:

PREFIX vcard:      <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?y ?givenName
WHERE
 { ?y vcard:Family "Smith" .
   ?y vcard:Given  ?givenName .
 }

但是我在课程的幻灯片中发现了这样的东西:

SELECT ?label_du_président ?âge_du_président ? label_du_pays
WHERE {
    ?une_élection a ex:electionPrésidentielle .
    ?une_élection ex:gagnéePar ?un_president .
    ?une_élection ex:alieuDans ?un_pays .
    ?un_president rdfs:label ?label_du_president .
    ?un_president ex:âge ?âge_du_president .
    ?un_pays rdfs:label ?label_du_pays
}

为什么以及何时使用 a

它是 rdf:type 属性 的 shorthand 符号。来自 SPARQL Query Language specs:

The keyword "a" can be used as a predicate in a triple pattern and is an alternative for the IRI http://www.w3.org/1999/02/22-rdf-syntax-ns#type. This keyword is case-sensitive.

将其视为意义 "is a (kind of)"。