通常在讨论语义数据库和本体的力量时,我听到人们说RDF数据是通用的,因为可以将本体应用于数据以便以不同的方式查看它.
然而,根据我的经验,数据集通常通过谓词与特定本体相关联,即在subject-predicate-object谓词中根据某些本体定义某些属性或关系.因此,例如,在关于电影的查询中,如果没有数据引用某个人的新"电影本体",那么我不能在针对DBPedia或LinkedMDB的查询中使用它的术语,对吧?
然后,我偶尔会看到一个数据集中的"链接",它实际上将一个特定资源连接到另一个具有自己的本体的数据集中的类似资源.即linkedmdb有owl:sameAs,但这似乎并不是人们将本体应用于数据的意思.
它是如何工作的,如何在数据集的SPARQL查询中使用关于某些主题的不同本体?
在W3C 参考文档中由RDFS定义的基类的描述表明某些类是一个类的实例和另一个类的子类(或者在某些情况下是同一类的实例和子类).来自更传统的面向对象的背景,作为实例的类的概念使我不知所措,我想知道是否有人能够向我解释作为实例的类与作为RDFS中的子类的类之间的有效区别.谢谢!
我想尽可能地使用语义Web从头开始实现一个网站.我的网站将是一个科学机构,我没有模型,但我认识到有实体/对象
这个想法是(某些)信息可以链接/查询/导出到数据库,其他站点,甚至可以在将来进行一些本体匹配.你知道任何可以帮助我的本体或语义Web资源吗?
我最近开始使用本体,我正在使用Protege构建一个本体,我也想用它来自动分类字符串.以下说明了一个非常基本的类层次结构:
String
|_ AlphabeticString
|_ CountryName
|_ CityName
|_ AlphaNumericString
|_ PrefixedNumericString
|_ NumericString
Run Code Online (Sandbox Code Playgroud)
最终字符串Spain应该被归类为CountryName或UE4564将是a PrefixedNumericString.
但是我不确定如何建模这些知识.我是否必须先定义一个字符是字母,数字等,然后从现有字符构造一个单词,还是有办法使用正则表达式?到目前为止,我只设法根据一个确切的短语对字符串进行分类String and hasString value "UE4565".
或者,为本体中的每个类保护正则表达式然后使用这些正则表达式在Java中对字符串进行分类会更好吗?
使用葡萄酒本体,我想创建SPARQL查询,以便我可以检索所有的葡萄酒和它们的属性如下面的表格-认为,我不知道属性的名称先验.
vin | rdf:type | vin:hasMaker | vin:hasSugar | ...
========================================================================== ...
GaryFarrellMerlot | vin:Merlot | vin:Elyse | vin:Dry | ...
--------------------------------------------------------------------------
ElyseZinfandel | vin:Elyse | vin:GaryFarrell | vin:Dry | ...
...
Run Code Online (Sandbox Code Playgroud)
有人能给我一个暗示吗?
- 编辑
查询结果不可能是我提到的格式,但我可以这样说:
vin | property | value
=================================================
GaryFarrellMerlot | rdf:type | vin:Merlot
-------------------------------------------------
GaryFarrellMerlot | rdf:hasMaker | vin:Elyse
-------------------------------------------------
...
Run Code Online (Sandbox Code Playgroud)
有了这个选择(谢谢cygri):
SELECT DISTINCT ?wine ?property ?value
WHERE {
?o1 a ?class .
?wine a ?o1 …Run Code Online (Sandbox Code Playgroud) 如果你看一下OWL本体定义,你会看到一堆类定义.其中之一是以下内容:
owl:Nothing a owl:Class ;
rdfs:label "Nothing" ;
rdfs:comment "This is the empty class." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf owl:Thing .
Run Code Online (Sandbox Code Playgroud)
这是否有用,如果是的话,它是什么?
我对OWL类和子类属性的继承感到困惑。一些帖子说OWL中没有继承(OWL:如何从超类继承两个类之间的属性关系?),http://answers.semanticweb.com/questions/619/rdfs-owl-inheritance-with -josekipellet)。但是,我也发现了一些相反的讨论。例如,“面向对象软件开发人员的语义Web入门”页面(https://www.w3.org/TR/sw-oosd-primer/)提到了面向对象语言OWL和RDF:“类可以安排在具有继承的子类层次结构中”(第3.3节)。https://www.w3.org/TR/rdf-schema/#ch_subclassof提到“属性rdfs:subClassOf是rdf:Property的一个实例,用于声明一个类的所有实例都是另一个类的实例。” 因此,这使我感到困惑。现在我有以下问题:
如果没有
考虑以下示例。“讲师”和“学生”的所有属性都可用于“人”类吗?
Example:
--------
### Classes ###
:CSModule rdf:type owl:Class ;
rdfs:subClassOf :Module .
:Lecturer rdf:type owl:Class ;
rdfs:subClassOf :Person .
:Student rdf:type owl:Class ;
rdfs:subClassOf :Person .
:Module rdf:type owl:Class .
:Person rdf:type owl:Class .
### Object Properties ###
:studies rdf:type owl:ObjectProperty ;
rdfs:domain :Student ;
rdfs:range :Module .
:teaches rdf:type owl:ObjectProperty ;
rdfs:domain :Lecturer ;
rdfs:range :Module .
### Data …Run Code Online (Sandbox Code Playgroud)我想将 Protege 中的一些类从不同的本体导入到我的本体中。例如,我需要类foaf:Person、org:Site、vcard:Organization等等。
我不想自己创建它们(并修改它们的 IRI)。当我导入整个本体(Schema.org、vCard、FOAF 等)时,我有很多不需要的元素。
有什么办法吗?
想象一下,我开始使用本体,因为它提供了一些有用的词汇来描述我感兴趣的对象,例如FOAF来描述一个人(我).我马上遇到两个问题.我遇到了另一个也有词汇描述人的本体论.
问题1:这些术语中的一些在功能上是等效的或相关的,但我不想被困在同一对象周围的两个本体之间,
<span property="foaf:name"><span property="dc:creator">Carl Boettiger</span></span>
Run Code Online (Sandbox Code Playgroud)
因为这很麻烦,似乎忽略了链接数据的整个想法,这应该足够聪明,知道a dc:creator也是一个,foaf:person. 那么这样做的正确方法是什么?我如何确认这些对象之间的关系(例如,大概不foaf:person应该是所有对象dc:creator.它是否在语义Web上的某个地方说dc:creator是一个子集foaf:person?我是否需要以某种方式链接到这样的语句?你能指出我在哪里吗?
问题2:一个本体中的词汇量不足以满足我的目的,因此我需要使用另一个词汇表中的词汇表.例如,据我所知,FOAF没有为我提供一种方式来说明我的组织,位置或角色(GoogleSnippets似乎认为必需的字段是有效的人).所以我去找一个方便的本体论,比如谷歌建议的那个,http://rdf.data-vocabulary.org,它有这些术语.现在我又有一个密切相关的问题,即确保这两个本体在一个人的意义上达成一致:
<div typeof="foaf:Person">
<span property="foaf:name">Carl Boettiger</span> is a <span property="v:role"> graduate student </span>
</div>
Run Code Online (Sandbox Code Playgroud)
v:role它有自己的想法,它属于什么,a typeof="v:Person.我是否还需要添加此typeof声明?我这时就需要做一些事情说出来是一样的foaf:Person,而且的确是v:role和foaf:name这两个描述同样的事情(我)?
非常感谢澄清我的困惑.
设计服务开放时间的最务实的方法是什么,以便SPARQL查询能够查询在特定时间间隔/特定时间间隔内打开的事物?
这个问题的答案应该包含:
(*简单和性能的额外点)