在Spaql中按字符串过滤SELECT输出

时间:2015-05-31 14:44:35

标签: filter sparql

我有一个像这样的Sparql查询:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX hrdata:<http://www.hrdata.com/ontologies/hrdata.owl#>
SELECT  ?tableName2 ?fieldName ?primaryKey1 ?primaryKey2 ?tableName1
WHERE {     ?tableName1 hrdata:hasField hrdata:EFFDT.
            ?fieldName hrdata:relatedField hrdata:EFFDT. 
            ?tableName2 hrdata:hasField ?fieldName.
            ?primaryKey1 hrdata:isPrimaryKey ?tableName1.
            ?primaryKey2 hrdata:isPrimaryKey ?tableName2.
       }

它向我返回一个不同tableNames的长列表,因为它们具有名称为'EFFDT'的相同属性。 我想在这样的地方添加另一个条件,告诉它我的意思是那些名为'xyz'的表格的'EFFDT':

Filter ( ?tableName1 = 'xyz')

我谷歌很多,但不幸的是,没有像你在下一页所能提供的解决方案可以帮助我。

你有什么想法吗?

1 个答案:

答案 0 :(得分:2)

?tableName1位于主题位置,是URI还是空白节点。

Filter ( ?tableName1 = 'xyz')测试字符串。

如果您的意思是URI包含字符串xyz,那么:

Filter ( contains(str(?tableName1),'xyz'))