我正在尝试使用OWL描述图。假设我要两个类workshop
和location
,并在它们之间有一个边缘hasLocation
。我可以在hasLocation
上拥有一个属性,该属性表示workshop
在location
发生的时间吗?我尝试使用Protege定义此属性,但似乎只能定义类的属性。
答案 0 :(得分:2)
您可以使用annotations或punning。
但是,注释或数据属性将是hasLocation
属性本身的属性,而不是其特定出现的属性。这是RDF / OWL和LPG之间的关键区别。
我建议使用或多或少的common建模技术。在海龟中:
@prefix : <http://www.semanticweb.org/1226761/ontologies/2018/10/untitled-ontology-6#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
[ rdf:type owl:Ontology ] .
:Workshop rdf:type owl:Class .
:Location rdf:type owl:Class .
:SpatioTemporalExtent rdf:type owl:Class .
:hasLocation rdf:type owl:ObjectProperty ;
rdfs:domain :SpatioTemporalExtent ;
rdfs:range :Location .
:hasSpatioTemporalExtent rdf:type owl:ObjectProperty ;
rdfs:domain :Workshop ;
rdfs:range :SpatioTemporalExtent .
:hasTime rdf:type owl:DatatypeProperty ;
rdfs:domain :SpatioTemporalExtent ;
rdfs:range xsd:dateTime .
:workshop1 rdf:type owl:NamedIndividual , :Workshop ;
:hasSpatioTemporalExtent :extent11 .
:extent11 rdf:type owl:NamedIndividual , :SpatioTemporalExtent ;
:hasLocation :city1 ;
:hasTime "2018-05-11T00:00:00"^^xsd:dateTime .
:city1 rdf:type owl:NamedIndividual , :Location .
或者,对于匿名个人:
:workshop1 rdf:type owl:NamedIndividual , :Workshop ;
:hasSpatioTemporalExtent [rdf:type :SpatioTemporalExtent ;
:hasLocation :city1 ;
:hasTime "2018-05-11T00:00:00"^^xsd:dateTime .
] .
您知道不允许在边缘设置属性的原因是什么吗?
RDF 表示资源描述框架。它最初旨在在Web上发布数据。资源应具有URI(好吧,除非它们是文字)。属性事件在本体论上不被认为具有足够强的标识符。例如,他们的人数相对较多...为了比较起见,宁愿说“我爱你” 而不是“我爱5个你” 。 >
在谓词位置的空白节点(具有弱标识符)可以解决此问题。因此,问题仍然存在,为什么在谓词位置不允许空白节点(即使对于Tim Berners-Lee,即使对于not for Manu Sporny也是如此)。
我认为原因是希望不要暂时放弃一阶基础,a b c
三元组的bearing in mind'自然'转换为b(a,c)
之类的FOL。然后[] b c
可以翻译成∃x b(x,c)
,但是a [] c
呢?