我有一个像这样的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')
我谷歌很多,但不幸的是,没有像你在下一页所能提供的解决方案可以帮助我。
你有什么想法吗?
答案 0 :(得分:2)
?tableName1
位于主题位置,是URI还是空白节点。
Filter ( ?tableName1 = 'xyz')
测试字符串。
如果您的意思是URI包含字符串xyz
,那么:
Filter ( contains(str(?tableName1),'xyz'))