Мне нужно описать возможности устройств и как семантически вызывать функции возможностей. Для этого я создал очень простой RDF Graph и использовал библиотеку @ rdfjs / serializer-jsonld для сериализации графика в файл JSON-LD со следующим кодом:
const rdf = require('@rdfjs/data-model')
const Readable = require('stream').Readable
const SerializerJsonld = require('@rdfjs/serializer-jsonld')
const serializerJsonld = new SerializerJsonld()
const input = new Readable({
objectMode: true,
read: () => {
input.push(rdf.quad(
rdf.literal('Device001'),
rdf.namedNode('https://schema.org/potentialAction'),
rdf.namedNode('https://schema.org/PhotographAction')))
input.push(rdf.quad(
rdf.namedNode('https://schema.org/PhotographAction'),
rdf.namedNode('https://w3id.org/function/ontology#Function'),
rdf.literal('takePhoto')))
input.push(null)
}
})
const output = serializerJsonld.import(input)
output.on('data', jsonld => {
console.log(jsonld)
})
, который создает следующий файл JSON-LD.
[
{
"@id": "Device001",
"https://schema.org/potentialAction": {
"@id": "https://schema.org/PhotographAction"
}
},
{
"@id": "https://schema.org/PhotographAction",
"https://w3id.org/function/ontology#Function": "takePhoto"
}
]
Это семантически правильно? Можно ли комбинировать онтологию [schema.org] (https://schema.org/) и онтологию функции без использования RDF-схемы или какого-либо класса или типа? Есть ли лучший способ объединить 2 онтологии? JSON-LD Детская площадка не дает ошибок, но есть ли лучший способ проверить?