如何陈述;帕特认识迈克;电话号码「;在RDF/OWL中

如何陈述;帕特认识迈克;电话号码「;在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存储中。使用合适的属性“知道”,

我如何声明Pat知道Mike的电话号码是一个概念,而不是RDF/OWL中的具体电话号码111222333


额外的积分可以说明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
    ] .