连接资源的属性(如果它们存在于SPARQL中)

时间:2019-01-31 14:31:26

标签: properties sparql

假设我拥有三重存储,其中某些资源以这种方式代表人:

<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).
  }

1 个答案:

答案 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 querydirect link to results)上通过Virtuoso实时运行。