在RESTful服务中,您可以定义资源链接:
<next xmlns="http://example.org/state-machine"
rel="http://mydomain.example.org/user"
url="http://mydomain.example.com/user/1234"
type="application/xml"/>
或JSON-LD示例:
{
"@context": {
"name": "http://xmlns.com/foaf/0.1/name",
"homepage": {
"@id": "http://xmlns.com/foaf/0.1/homepage",
"@type": "@id"
}
},
"name": "Manu Sporny",
"homepage": "http://manu.sporny.org/"
}
或vCard示例:
<address id="hcard" class="vcard">
<p class="fn n">
<span class="given-name">First</span>
<span class="additional-name">M</span>.
<span class="family-name">Last</span>
rel
属性指向域内该免费提供对象的架构/微格式/微数据/ RDFa描述。假设我有一个包含字段名称和主页的用户对象,
在上面的示例中,rel="http://mydomain.example.org/user"
会更合适,因为它是特定于域的用户,还是应该使用foaf中的这类内容?
"name": "http://xmlns.com/foaf/0.1/name",@id": http://xmlns.com/foaf/0.1/homepage"
我对这些RDFa,微格式,微数据,架构,vcards,hcards,foaf,http://www.productontology.org/id/,www.schema.org / name,http://rdf.data-vocabulary.org/#name,json架构等感到困惑我什么时候创建自己的微格式/模式,何时使用那些不同领域(vCards,hcards,foaf,productontology,schema.org)中定义的公共微格式/模式?我知道RDFa,微格式等等,实际上是关于数据的公共元数据,但我在哪里可以找到它们的完整列表?
如果我要创建自己的rel rel="http://mydomain.example.org/user"
,定义用户对象,我该如何记录它?我可以遵循一个标准吗?有些地方建议使用人类可读的发现文档,或者在该位置描述合同和版本的JSON / XML模式?
一个建议是使用不同版本的http://mydomain.example.com/v1/user/1234与服务的不同版本规范进行通信,以便现有客户端不会因版本更改而中断。
请帮助我解决这个混淆,或者我应该使用的术语,关于Microformat,RDF,Microdata,Schema等。
答案 0 :(得分:1)
刚刚开始学习RDF / Ontology时,我也有同样的困惑。
许多不同组织都有许多词汇。关键是要使用其他人已经建立并采用的那些;但更重要的是,请确保使用代表您想要表达的“语义含义”的“术语”。
要回答您的具体问题:
1)您可以'创建自己的条款,但关键是当其他应用程序解析您的条款时,应用程序将需要知道您的条款的真正含义。如果您使用FOAF:主页,所有应用程序都知道它的语义含义及其引用的内容,并且从中可以看出,无论谁是FOAF:主页的主题(rdf tripple中的主题)都是FOAF:Person。有开放链接数据的地方。
http://linkeddata.org/
2)我自己对RDFa / Microfromat没有太多经验,我的理解是这些技术希望在HTML层提供机器可理解的语义术语。我认为你可能不想创建自己的,如果有现有的,但除了那里你可以定义你自己的术语。
3)您可以使用OWL或RDFS定义术语 刚看到这个,它可能有用.. https://code.google.com/p/tdwg-rdf/wiki/Beginners7OWL
但是在我的轻量级项目中,我们只需通过指定命名空间,术语名称及其含义来创建术语。您可以按照以下内容来定义术语: http://dublincore.org/documents/dcmi-terms/
JSON / XML / N3 ...只是不同的序列化格式,同一个术语可以使用许多不同的格式进行序列化。要记住的重要一点是,您定义了术语的语义含义,它们将被序列化为不同的格式。并不是格式不重要,而是所有格式都指向相同的术语和相同的含义。
4)我自己的版本是我的词汇..但我对最佳实践没有太多的见解。
希望这有帮助!!
答案 1 :(得分:0)
在RDFa中有一个众所周知的表达方式:
<html><body vocab="http://purl.org/dc/terms/">
<div typeof="foaf:Person">
<span property="creator">manu sporny</span>
<span property="foaf:age" content="66"/>
<span property="foaf:homepage" resource="http://x.com"/>
</div>
</body></html>
&#34; foaf&#34;前缀由RDFa默认。没有要定义的上下文。 &#34; dc&#34;前缀是默认值,&#34; creator&#34;不需要前缀。
这是标准,忘记其他一切。
直接可用的前缀列表由提供 http://www.w3.org/2011/rdfa-context/rdfa-1.1 您可以在这里找到许多可用的概念,实际上是所有公共模式。
注意&#34;架构&#34;前缀,对于此处定义的词汇表: http://schema.org/ 它特别丰富,应用广泛。 另请注意,它尝试定义微格式以与RDFa表示法竞争。删除它并使用RDFa的词汇表。