如何陈述;帕特认识迈克;电话号码「;在RDF/OWL中
我如何声明Pat知道Mike的电话号码是一个概念,而不是RDF/OWL中的具体电话号码111222333如何陈述;帕特认识迈克;电话号码「;在RDF/OWL中,rdf,semantic-web,owl,Rdf,Semantic Web,Owl,我如何声明Pat知道Mike的电话号码是一个概念,而不是RDF/OWL中的具体电话号码111222333 额外的积分可以说明Mary知道Pat知道Mike的电话号码……我会用命名图来解决这个问题。将三元组“Mike的电话号码是111222333”粘贴到一个命名图中,然后将另一个三元组放入默认图中,显示“Pat知道该命名图” OWL不支持命名图,但SPARQL 1.0和RDF 1.1支持命名图,尽管还没有标准语法,因此您需要将各种图从单独的文件分别加载到SPARQL存储中。使用合适的属性“知道”,
额外的积分可以说明Mary知道Pat知道Mike的电话号码……我会用命名图来解决这个问题。将三元组“Mike的电话号码是111222333”粘贴到一个命名图中,然后将另一个三元组放入默认图中,显示“Pat知道该命名图”
OWL不支持命名图,但SPARQL 1.0和RDF 1.1支持命名图,尽管还没有标准语法,因此您需要将各种图从单独的文件分别加载到SPARQL存储中。使用合适的属性“知道”,您可以使用RDF具体化:
:Pat :knows [
rdf:subject :Mike ;
rdf:predicate :telephoneNumber ;
rdf:object <tel:1112223333>
]
:Mary :knows [
rdf:subject :Pat ;
rdf:predicate :knows ;
rdf:object [
rdf:subject _:b1 ;
rdf:predicate rdf:subject ;
rdf:object :Mike ;
rdf:subject _:b2 ;
rdf:predicate rdf:predicate ;
... sanity barrier exceeded ...
]
]
如果你愿意走出一个单一的图形,生活就简单多了。您可以只拥有几个文件:
文件1:
:Mary :knowsContentsOf <FILE2>
:Mary:knowsContentsOf
文件2:
:Mike :telephoneNumber <tel:1112223333>
:迈克:电话号码
甚至可以将这两个文件都放在一个文件信封中,并指向文件的片段。这基本上就是SPARQL中命名图提供给您的内容。以下内容如何(使用有效的OWL DL进行娱乐):
你的问题很模糊。通常,您必须创建一个将person(或Mike和Pat的任何类)作为域和范围的属性。然后用三元组陈述这个事实。这纯粹是假设的情况吗?或者你有一个现有的数据集,这纯粹是一个假设。试图理解如何对RDF/OWL中的概念和具体数据进行推理基本上,一切都是一个三元组,由主语、谓语和宾语组成。在这种情况下,帕特可以是主语,迈克可以是宾语,你的谓语可能是knowsTelephoneNumberOf。根据您选择的语言(RDF、RDF-S、OWL-Lite、OWL-DL、OWL-Full),有几十种方法来描述它,每种方法在呈现给推理者时都有不同的潜力。啊,谢谢。没有想到一个谓词knowsTelephoneNumberOf。我猜电话号码也可能是一个具有拨号号码属性的对象。这是一个非常普遍的问题。我会从阅读开始,然后继续学习其他语言。在我读过的一本书《语义Web服务》J.Cardoso等人中,特别是在其第一章《句法和语义Web》中,进行了一个简洁的比较。
# assume prefixes defined
<> a owl:Ontology .
:Person a owl:Class .
:PhoneNumber a owl:Class .
:knowsThing a owl:ObjectProperty;
rdfs:domain :Person .
:belongsTo a owl:ObjectProperty;
rdfs:range :Person .
:Mike a :Person .
:Pat a :Person;
:knowsThing [
a :PhoneNumber;
:belongsTo :Mike
] .
<> a owl:Ontology .
:Person a owl:Class .
:PhoneNumber a owl:Class .
:knowsThing a owl:ObjectProperty;
rdfs:domain :Person .
:knownBy a owl:AnnotationProperty;
rdfs:range :Person .
:belongsTo a owl:ObjectProperty;
rdfs:range :Person .
:Mike a :Person .
:Pat a :Person;
:knowsThing _:mikesnumber .
_:mikesnumber a :PhoneNumber;
:belongsTo :Mike .
:Mary a :Person .
[] a owl:Annotation;
owl:annotatedSource :Pat;
owl:annotatedProperty :knowsThing;
owl:annotatedTarget _:mikenumber;
:knownBy :Mary .
:subject a owl:ObjectProperty;
rdfs:domain :Statement .
:predicate a owl:ObjectProperty;
rdfs:domain :Statement .
:object a owl:ObjectProperty;
rdfs:domain :ObjectStatement .
:dataObject a owl:DatatypeProperty;
rdfs:domain :DataStatement .
:hasPhone a owl:DatatypeProperty .
:knowsFact a owl:ObjectProperty;
rdfs:domain :Person;
rdfs:range :Statement .
:ObjectStatement a owl:Class;
rdfs:subClassOf [
owl:onProperty :object;
owl:cardinality 1
] .
:DataStatement a owl:Class;
rdfs:subClassOf [
owl:onProperty :dataObject;
owl:cardinality 1
] .
:Statement a owl:Class;
owl:unionOf ( :ObjectStatement :DataStatement );
rdfs:subClassOf [
owl:onProperty :subject;
owl:cardinality 1
], [
owl:onProperty :predicate;
owl:cardinality 1
] .
:Person a owl:Class .
:Pat :knowsFact [
:subject :Mike;
:predicate :hasPhone
] .
:Mary :knowsFact [
:subject :Pat;
:predicate :knowsFact;
:object [
:subject :Mike;
:predicate :hasPhone
] .