我目前正在寻找一种通过SPARQL端点查询DBPedia的Infobox Onyology数据库的方法,以获取类的列表,所选类的子类以及给定类的属性.据我所知,您要么需要知道您正在寻找的属性,要么搜索特定的内容 - 我发现的所有示例似乎都基于您想要搜索特定内容的想法(比如某个高度以上的城市人口等),而我想建立一些可以有效"浏览"类别的东西.例如,从此类层次结构图上的"owl:Thing"的子类列表开始,向用户显示所选子类的子类列表.似乎可以通过映射wiki浏览这样的东西,但最好直接查询SPARQL端点.
是否有一些简单的SPARQL查询会返回这些类的可用类和属性?
SELECT ?subject WHERE {
?subject rdfs:subClassOf owl:Thing
}
Run Code Online (Sandbox Code Playgroud)
这返回了owl的子类列表:Thing,如果我用其中一个子类替换owl:Thing,我得到它的子类列表,直到没有子类,此时我可以选择所有的资源由所选子类给出的类型.不过,我仍然不太确定如何获得子类共有的所有属性.
更新2 现在就越来越近了.此查询为我提供了所有属性(dbpedia:property的子项),它们也是一个国家/地区,以及它们的标题:
SELECT DISTINCT ?prop ?title WHERE {
?country ?prop ?value.
?country a <http://dbpedia.org/ontology/Country>.
?prop rdf:type rdf:Property.
?prop rdfs:label ?title
}
Run Code Online (Sandbox Code Playgroud)
这实际上是我真正要求的.我现在要做的最后一件事是尝试按照它们出现的页数来排序(可能最常见的属性是最感兴趣的属性).
我需要在内存中存储一个非常长的数组.每个数组项只是一个标志TRUE/FALSE(0/1).我需要它非常节省内存,所以我想把它作为一个unsigned char区域顶部的掩码位来实现.char内存中的每一个都应该给我至少8个标志.我已经实现了以下功能:
static SIZE = 8; /* 8 bits = 1 byte = 1 char */
/* creates and initializes the array for N elements */
unsigned char *new_bit_array(long n) {
int extra = (n % SIZE) ? 1 : 0;
size_t ms = ((n / SIZE)+extra) * sizeof(unsigned char);
unsigned char *p = malloc(ms);
memset(p,0xFF,ms);
return p;
}
/* mask setter for nth bit of a char, call by function bit_array_set*/
char bit_mask_set(short nbit,short value) …Run Code Online (Sandbox Code Playgroud) 我正在使用BIND()从4store中选择和插入三元组.
以下SELECT工作,
PREFIX Sensor: <http://cei.usc.edu/Equipment.owl#>
SELECT *
WHERE {
?subject100 Sensor:test1 "100"
BIND("1000" as ?x) .
} LIMIT 10
Run Code Online (Sandbox Code Playgroud)
但是当我尝试执行INSERT WHERE时,它会失败
PREFIX Sensor: <http://cei.usc.edu/Equipment.owl#>
INSERT {
?subject Sensor:test510 ?value .
}
WHERE {
{
?subject100 Sensor:test1 "100" .
BIND("200" as ?value)
}
UNION
{
?subject99 Sensor:test1 "99" .
BIND("300" as ?value)
}
}
Run Code Online (Sandbox Code Playgroud)
错误:BIND不能与操作0的第1行的SPARQL 1.0一起使用
我正在运行最新的4Store v1.1.4 2011年9月20日
我尝试了上面的INSERT WHERE与不同的SPARQL商店,它的工作原理.BIND是SPARQL 1.1中的一个新构造,所以我不确定它是否在4Store中受支持.
使用protege,我正在创建RDF文件.现在我想知道如何指定一个槽是给定类的主键和外键?提前致谢
我需要将SNOMED CT本体导入图形数据库,在本例中为Neo4J,但它最终可能是另一种选择.
但是,为了实现这一点,我无法找到SNOMED CT底层关系数据模型的清晰描述.或者至少是简化的SQL视图,它们以可以映射到图形数据库的方式公开实体关系.
我非常感谢任何有关此事的指导或以前的经验.
我是SPARQL的新手,我正在尝试从实体中选择两个或更多数据属性.我有Artist实体,它有两个数据属性(id和name).我正在尝试获得这样的结果:
id Name
0 Artist 1
1 Artist 2
Run Code Online (Sandbox Code Playgroud)
但我得到的是这个:
id Name
0 Artist 1
0 Artist 2
1 Artist 1
1 Artist 2
Run Code Online (Sandbox Code Playgroud)
这是我的SPARQL查询:
PREFIX wits: <http://wits.org/song/>
SELECT ?name, ?id
FROM <http://wits.org/song>
WHERE
{
<http://wits.org/song/Artist> wits:Name ?name .
<http://wits.org/song/Artist> wits:ID ?id
}
Run Code Online (Sandbox Code Playgroud)
这是Artist Class的RDF实现:
<!ENTITY www "http://www.wits.org/" >
<owl:Class rdf:about="&www;Artist">
<rdfs:subClassOf rdf:resource="&owl;Thing"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&www;song#ID"/>
<owl:allValuesFrom rdf:resource="&xsd;unsignedInt"/>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&www;song#Name"/>
<owl:qualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:qualifiedCardinality>
<owl:onDataRange rdf:resource="&xsd;string"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
Run Code Online (Sandbox Code Playgroud)
这是先前执行的INSERT命令:
PREFIX …Run Code Online (Sandbox Code Playgroud)