在编写本体时,有几种非常常用的类型,包括:
前三种看起来像是以某种特定的方式使用,但我发现我对它们的看法受到我在FOAF中看到它们使用方式的挑战.
应该何时使用或不使用它们?
如此问题中显示的标题类似,我想通过知道其名称的一部分来检索dbpedia资源.我是一个初学者,当谈到SPARQL等,但在关注的例子对我帮助很大,因为笔者搜索了"罗马尼亚",而该人回答他迷上了一个SPARQL要求做的工作.这很好,但这就是事情.
在这个例子中,他们已经"知道"罗马尼亚是一个国家,因此
?c a dbpedia-owl:Country ;
Run Code Online (Sandbox Code Playgroud)
在WHERE子句中.完整的sparql请求正在
SELECT ?c
WHERE {
?c a dbpedia-owl:Country ;
foaf:name "Romania"@en .
FILTER NOT EXISTS {?c dbpedia-owl:dissolutionYear ?y}
}
Run Code Online (Sandbox Code Playgroud)
但是,这个问题并不十分完整地回答我们的需求,因此寻找其名称的任何资源,在"名称"作为一个资源,或它的一部分的实际名称,不管它的(RDF:)类型.目标是搜索"任何东西",只知道名称或其中的一部分.
我一直在做一些研究,问你们这个问题之前,我已经知道这个问题"这个名字的一部分"可以用BIF功能来解决(糟糕的方法,因为它不是SparQL兼容),或CONTAINS子句,但我找不到任何展示如何使用它的例子.
现在让我们假设在dbpedia资源中有一个"单词"来搜索,该单词将是来自某个用户的输入.我们称之为"输入".
我想,这个请求看起来像:
SELECT ?something WHERE
{
?something a (dbpedia Resource).
CONTAINS(?something,"INPUT")
}
Run Code Online (Sandbox Code Playgroud)
我的主要问题是两个主要方面:
那么,有没有人知道这个"主查询"通过提供其名称或其中的一部分来获取资源?(一个例子是提供"奥巴马",并且不仅为巴拉克而且为米歇尔获得结果).
先感谢您.
我正在尝试编写一个SPARQL查询,它应该给我所有foaf:Agents不是foaf:Persons.
我无法看到将此OPTIONAL/BOUND构造应用于此问题的方法,因为所有属性都喜欢rdfs:subClassOf并且rdf:type具有传递性和反身性.
我试过这个:
SELECT * WHERE {
?x rdf:type foaf:Agent
OPTIONAL { ?y rdf:type foaf:Person }
FILTER ( !BOUND(?y) ) }
Run Code Online (Sandbox Code Playgroud)
但是rdf:type似乎是传递性的,至少与JENA/ARQ/SDB一样.
我希望使用SPARQL作为一个相对基本的任务:给定一个FOAF图,我想解析我在那里找到的元素,获取它们的标签(如果它们存在)然后,将它们用作新的图形,从中找到有关这些人的信息.
例如,您可以想象一个简单的用例,我想运行一个SPARQL查询来列出我最喜欢的食物(根据我的FOAF文件),以及我所有朋友最喜欢的食物.
这就是目前的情况.请注意,出于测试目的,目前我正在尝试使用下面的查询,通过?name3变量获取朋友的名字.运行此查询不会返回?graph和?name3的任何结果,即使我知道rdfs:seeAlso链接到一些有效的RDF文件,其中至少有两个应该具有name属性.感谢您提供的任何输入!
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?name1 ?name2 ?graph ?name3
FROM <my-rdf-file>
WHERE {
?person1 foaf:knows ?person2 .
?person1 foaf:name ?name1 .
?person2 foaf:name ?name2 .
OPTIONAL {
?person2 rdfs:seeAlso ?graph .
GRAPH ?graph {
?person3 foaf:name ?name3 .
}
}
}
Run Code Online (Sandbox Code Playgroud) 我知道这听起来像一个非常愚蠢的问题,但我一直试图解决这个问题,但我找不到任何相关内容,尽管这显然应该是可行的.
我正在开发一些使用曼彻斯特OWL语法和HermiT推理器通过其API查询OWL文件的东西.我也可以在Protege 4的DL Query选项卡上运行查询,以检查我在该文件上的查询结果.该文件基本上是添加数据实例的朋友之友(FOAF)本体.
问题:我找不到通过其唯一标识符查询实例的方法.
它应该是URI,所以例如对于具有URI的Person对象 http://xmlns.com/foaf/0.1/Andrew_Kuchling,我试图运行以下查询:
Person and URI value "http://xmlns.com/foaf/0.1/Andrew_Kuchling"
Person value "http://xmlns.com/foaf/0.1/Andrew_Kuchling"
Person and URI value "Andrew_Kuchling"
Person that "Andrew_Kuchling"
Run Code Online (Sandbox Code Playgroud)
这些都不起作用.(URI是通过http://xmlns.com/foaf/0.1/为您输入的任何字符串添加前缀来构造的,并且URI实际上并未在本体中标识为属性).
在FOAF中,mbox_sha1sum是邮箱的sha1sum.邮箱与个人有着独特的联系.所以我尝试了以下查询:
Person and mbox_sha1sum value "mbox_sha1sum-property-value-here"
Run Code Online (Sandbox Code Playgroud)
但是,它甚至不执行此查询,因为它感觉查询不正确.该mbox_sha1sum值与我为此Person添加的值相同.它存在于个人中.
它确实执行此查询:
Person and firstName value "Andrew"
Run Code Online (Sandbox Code Playgroud)
所有数据属性都不是专用数据类型.默认情况下作为文字处理.
我真的不知道我做错了什么.请有人请帮忙吗?
我写了一个脚本来导出twitter朋友作为foaf rdf描述.现在我正在寻找一种可视化朋友网络的工具.我试过http://foafscape.berlios.de/但是对于300多个节点来说它真的很慢并且在自动格式化方面做得不好.
有关优秀图形可视化工具的任何提示?如果他们不直接支持foaf,那就没关系,但他们应该能够使用图形节点的图像并能够显示大图.Linux支持会很好.
哦,我正在寻找一种可以手动移动节点的交互式工具.
更新:感谢您的意见.我知道graphviz和静态图像真的很棒.但对于大型数据集,我需要能够选择节点并突出显示所有邻居.
我正在尝试使用此查询通过国家/地区名称获取描述国家/地区罗马尼亚的资源:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX : <http://dbpedia.org/resource/>
SELECT DISTINCT ?x WHERE {
?x foaf:name 'Romania'
}
Run Code Online (Sandbox Code Playgroud)
但是,它不会检索任何内容.如何通过字符串获取resource http://dbpedia.org/resource/Romania(:Romania)'Romania'.如果我想通过国家/地区资源检索国家/地区的名称,我使用以下查询,该工作正常:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX : <http://dbpedia.org/resource/>
SELECT DISTINCT ?x WHERE {
:Romania foaf:name ?x
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 sparql 从 dbpedia 中提取包含人名等的实体字典。
PREFIX owl: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
SELECT ?name
WHERE {
?person a owl:Person .
?person dbpprop:name ?name . FILTER(lang(?name) = "en")
}
Run Code Online (Sandbox Code Playgroud)
上面的查询确实成功了,但是当我将语言名称更改为 时fr,没有任何东西可以获取。
如何获取其他语言的名称?
此外,为什么我不能使用下面的查询过滤语言?
SELECT ?name
WHERE {
?person a owl:Person .
?person dbpprop:language "English"
?person dbpprop:name ?name .
}
// this query returns nothing
Run Code Online (Sandbox Code Playgroud)
我尝试使用获取所有语言
SELECT DISTINCT ?lanName
WHERE {
?person a owl:Person .
?person dbpprop:language ?lanName .
}
Run Code Online (Sandbox Code Playgroud)
并且结果集包含English.
我是编写RDF模式的初学者,并且想知道我应该如何充分利用URI概念并创建一个简单感兴趣的RDF文档.我正在尝试创建以下声明的RDF-
Jeffy is a Graduate student
Jeffy likes yoga
Jeffy is seeking Tennis.
Run Code Online (Sandbox Code Playgroud)
我该如何根据这三个句子编写RDF.对此有任何启发都会非常有帮助.