假设我拥有三重存储,其中某些资源以这种方式代表人:
<http://natarchives.com.mt/person/person8755>
a foaf:Person ;
foaf:family_name "Calleja"@mt , "Calleya"@la ;
foaf:firstName "Nardus" .
<http://natarchives.com.mt/person/person3939>
a foaf:Person ;
foaf:firstName "Martinj" .
可以看到,有时此人有一个名字,但没有一个family_name。是否可以获取一个由名称和姓氏组成的SPARQL查询列全名(如果存在)或仅由名称组成?
为了将来,我以这种方式修复它:
SELECT DISTINCT ?firstName
?family_name
?name
WHERE
{ ?person a foaf:Person ;
foaf:firstName ?firstName .
OPTIONAL { ?person foaf:family_name ?family_name . }
bind ( COALESCE(?firstName, "") As ?firstName1).
bind ( COALESCE(?family_name, "") As ?family_name1).
bind (concat(str(?firstName1),str(?family_name1)) as ?name).
}
答案 0 :(得分:1)
是的。您在这里没有查询,因此很难进行调整。基本就像-
SELECT DISTINCT ?firstName
?family_name
( CONCAT ( ?firstName, " ", ?family_name ) AS ?fullname )
WHERE
{ ?person a foaf:Person ;
foaf:firstName ?firstName .
OPTIONAL { ?person foaf:family_name ?family_name . }
}
-您可以在URIBurner.com(link to query和direct link to results)上通过Virtuoso实时运行。